Over the last 5 years, I have led directly or been involved in a number of enterprise projects to introduce or expand the use of machine learning. As a Product Manager turned Data Scientist, I have found time and time again that many concepts in Product Management and Agile development help de-risk and enhance the overall effectiveness of ML solutions.
In this article, I’ll highlight two key concepts - one from Agile and one from Product Management - and explain how they help build sustainable, reproducible ML systems.
1. Agile planning is about managing uncertainty - you are trading resources (eg, time) for information. Data science explorations adopt this mode of thinking well.
Acknowledging uncertainty is the key differentiator from an Agile and a waterfall process. The only reason I might need to adjust my backlog or iterate my sprint plans is due to the fact that my original plan could be wrong. Things where being wrong hurts the most should be (1) broken down into tests that (2) generate information that (3) allow for decision-making under greater certainty.
“If it hurts, do it more frequently, and bring the pain forward.” - Jez Humble
In my projects, we call this aspect of project design “bringing the pain forward.” This is a concept from Jez Humble’s book on Continuous Delivery. His book focuses on automating deployment pipelines (testing, environment management, builds, etc.) to allow for more frequent pushes to production. However, the concept translates to more general risk management as well.
A primary goal is to eradicate “toil” - work that doesn’t make a meaningful contribution to the final product. Agile planning for ML models and applications follows a similar logic - seek to eradicate incorrect lines of inquiry, model choices, UI, and technical design as quickly as possible.
Aspects of the plan that are not tested are assumptions. Erroneous assumptions can be very dangerous. If I assume a fact without designing a test, I am propagating the risk that I could be wrong “throughout” the project.
Even benign assumptions can kill the value proposition of a solution, so it’s important to treat them with respect. For example:
- You do a small scale POC on one country’s transaction data using pandas or R. You know that scaling may require a centralized architecture and a distributed system, but you don’t have this discussion until you’ve proven your toy model’s efficacy. In discussing next steps, it becomes apparent your “value” is theoretical - the technical resources do not exist.
- You are working to optimize the pricing of in-store goods. Designing an A/B test is difficult - you have a policy of consistent promotions (eg, no holdout) within a state or country to manage against complicated promotional pricing regulations. You attempt to design a difference-in-differences or synthetic control method to prove incrementality, but the business sponsor dismisses it as theoretical. You have a conviction you’ve created value, but challenges in proving it.
- You are working on a classification problem, e.g., churn. The business user has sold a UI in which every customer has accurate probability predictions and clear rationale supporting each customer’s prediction. However, low incidence rates (~1%) make probability calibration a challenge, and the range and nature of churn reasons makes feature engineering for useful SHAP values costly and difficult. Had you been involved earlier, you would focus on ranking/discrimination and decoupling rationale from prediction, if possible.
At the beginning of a ML exercise, make a list of everything that can go wrong - and use that as a starting point for your planning!
2. Data science plans and assumptions are best managed when framed around a set of product and technical requirements.
Notice above that I mentioned Agile tests are for “where being wrong matters most.” Experience and judgement really can make the difference between a successful project that completes on time and something that never quite works. Part of leading successful teams requires building reserves of trust with your team, your partners, and stakeholders.
A good way to build trust is to give a clear conception of the end solution, with a draft set of product and technical requirements. It should be clear that these requirements are assumptions and subject to revision. It is helpful to communicate which requirements have greater uncertainty, and their associated tests in the plan.
For example, at the beginning of a model and/or application’s development, I may not know:
- Any required changes to operational processes necessary for adoption (and the associated resistance to change)
- Business constraints that shape the necessary inputs/outputs - for example, pricing ladders constrain price outcomes, data loads/availability can affect scoring cadences
- The right form factor that will ensure a tool is used
- The preferred business metrics for measurement
By having a solution-mindset, and by trying to define clear product and technical requirements, I can then build slices of functionality that allow me to iterate towards a final solution.
A useful mental model for how to decompose a problem is shown by the “looks like” vs. “works like” approach to prototyping. In this approach, the UI/UX of a solution (the “looks like”) and its core functionality (the “works like”) can be developed separately and in parallel. As feedback about each component is collected, it may influence the requirements of the other component. For example, technical limitations may impact requirements for the user experience, and revisions of the user workflow may change the roadmap/priorities of the different technical features.
Each component of the overall solution can then be further decomposed into basic components, with a priority for collecting quick feedback. This follows John Gall’s famous quote: “A complex system that works is invariably found to have evolved from a simple system that worked.”
A few recommendations for building out your ML solution:
- For the solution design, the first simple system should be a “walking skeleton.” Having a functional end-to-end pipeline with limited functionality will ferret out any integration issues early, and can surface necessary storage and processing patterns.
- For the model design, the first simple system should be the quickest MVP that creates a baseline prediction. Google’s Rules of ML suggest using ML only after heuristics become too complex. This logic should extend to ML solutions as well, starting with straightforward implementations that become increasingly sophisticated (eg, start with classical time-series methods for forecasting before testing nonlinear approaches).
- For interaction design, design thinking approaches should guide the first simple system:
- Generate options for yourself - get comfortable exploring ideas using divergent thinking. Great solutions often steal components from multiple good ideas.
- Find ways to collect user behavior - information through engagement can often be of higher quality than basic market or user research.
- Get engagement through visual tools (eg, wireframing, excel mockups) - take time to listen and pay attention to points of friction or counterintuitive (to use) usage
Applied ML - managing the “high risk, high reward” tradeoff.
ML systems are known for the tremendous value they can create, as well as their potential for “high interest” technical debt, drift, biased predictions, etc. These challenges are often coupled with the need to educate business users on how to interact with such systems, their role and responsibilities, and managing expectations about what can vs. what cannot be done.
Proven software development approaches for doing this well - particularly Agile and Product Management principles - can create trust and accelerate the adoption of these tools and capabilities.


Awesome! Now, check your email.
In order to complete the application process, please verify your email address by clicking the link that we've sent to your email.
If you haven't received the email, please contact us at<EMAIL_ADDRESS>In order to complete the application process, please verify your email address by clicking the link that we've sent to your email.
If you haven't received the email, please contact us at micro@nwhacks.com.


This
parameter file in
Database subdirectories specifies SubGenes
and the allowed distances between them.
A SubGene is a collection of MotifGroups from the same major
component of the retrovirus. A SubGene hit is composed of one or more Motif hits and has a hotspot. The
distances between the Motif hit hotspots and the
SubGene hit hotspot must conform with the contraints in
MotifGroups.txt.
SubGene hits are combined into Chains, representing
possible retroviruses. The distances between the SubGene hits are
expected (though there are exceptions) to conform to the constraints
contained in SubGenes.txt.
SubGenes.txt is preferably but not necessarily formatted
into columns, so that the correspondence between fields in the lines is
clear.
It contains a number of singleparameters:
- One with tke key 'Names'. Its contents part is a
blank-delimited list of names of all the SubGenes.
- As many singleparameters as there are SubGenes. The
key of each is the name of a SubGene. Its contents part is a
blank-delimited list of range specifiers,
specifying the acceptable range of distances between the hotspot of a
hit by the SubGene specified by the key, and the hotspot of a hit by
the SubGene named at the same position in the 'Names' parameter. (This
sounds awful but is much clearer if you look into the file).


welcome to
Adults Only Petfinder
Connecting lonely animal lovers with new furry friends.
Are you over 18?
Yes!
No
Do you like animals?
Yes!
No


Usage within Python¶
To use ENASearch within Python:
>>> import enasearch
Functions¶
-
enasearch.
build_retrieve_url
(ids, display, result=None, download=None, file=None, offset=None, length=None, subseq_range=None, expanded=False, header=False)[source]¶ Build the URL to retrieve data or taxon
This function builds the URL to retrieve data or taxon on ENA. It takes several arguments, check their validity before combining them to build the URL.
Parameters: - ids – comma-separated identifiers for records other than Taxon
- display – display option to specify the display format (accessible with get_display_options)
- offset – first record to get
- length – number of records to retrieve
- download – download option to specify that records are to be saved in a file (used with file option, accessible with get_download_options)
- file – filepath to save the content of the search (used with download option)
- subseq_range – range for subsequences (limit separated by a -)
- expanded – boolean to determine if a CON record is expanded
- header – boolean to obtain only the header of a record
Returns: a string with the build URL
-
enasearch.
check_display_option
(display)[source]¶ Check if a display id is in the list of output formats for a query on ENA
This function raises an error if the id is not in the list of possible displayable format
Parameters: display – display to check
-
enasearch.
check_download_file_options
(download, file)[source]¶ Check that download and file options are correctly defined
This function check:
- A filepath is given
- A download option is given
- The download option is in the list of options for download of data from ENA
Parameters: - download – download option to specify that records are to be saved in a file (used with file option, accessible with get_download_options)
- file – filepath to save the content of the data (used with download option)
-
enasearch.
check_download_option
(download)[source]¶ Check if an options is in the list of options for download of data from ENA
This function raises an error if the id is not in the list of possible download options
Parameters: download – download format to check
-
enasearch.
check_length
(length)[source]¶ Check if length (number of results for a query) is below the maximum
This function raises an error if the given length (or number of results for a query) is below the maximum value <lengthLimit>
Parameters: length – length value to test
-
enasearch.
check_result
(result)[source]¶ Check if a result id is in the list of possible results accessible on ENA
This function raises an error if the result is not in the list of possible results
Parameters: result – id of result to check
-
enasearch.
check_returnable_fields
(fields, result)[source]¶ Check that some field id correspond to returnable fields for a resut
This function raises an error if one of the ids is not in the list of possible returnable fields for the given result
Parameters: - fields – list of fields to check
- result – id of the result (partition of ENA db), accessible with get_results
-
enasearch.
check_sortable_fields
(fields, result)[source]¶ Check that some field id correspond to sortable fields for a resut
This function raises an error if one of the ids is not in the list of possible sortable fields for the given result
Parameters: - fields – list of fields to check
- result – id of the result (partition of ENA db), accessible with get_results
-
enasearch.
check_subseq_range
(subseq_range)[source]¶ Check that a range of sequences to extract is well defined
This function check:
- The range is correctly built: 2 integer values separated by a -
- The second value is higher than the first one
Parameters: download – range for subsequences (limit separated by a -)
-
enasearch.
check_taxonomy_result
(result)[source]¶ Check if a result id is in the list of possible results in ENA Taxon Portal
This function raises an error if the result is not in the list of possible taxonomy results
Parameters: result – id of result to check
-
enasearch.
format_seq_content
(seq_str, out_format)[source]¶ Format a string with sequences into a list of BioPython sequence objects (SeqRecord)
Parameters: - seq_str – string with sequences to format
- out_format – fasta or fastq
Returns: a list of SeqRecord objects with the sequences in the input string
-
enasearch.
get_display_options
(verbose=False)[source]¶ Return the possible formats to display the result of a query on ENA
Parameters: verbose – boolean to define the printing info Returns: dictionary with the keys being the formats and the values a description of the formats
-
enasearch.
get_download_options
(verbose=False)[source]¶ Return the options for download of data from ENA
Parameters: verbose – boolean to define the printing info Returns: dictionary with the options and the values a description of the options
-
enasearch.
get_filter_fields
(result, verbose=False)[source]¶ Return the filter fields of a result
This function returns the fields that can be used to build a query on a result on ENA. Each field is described in a dictionary with a short description and its type (text, number, etc).
Parameters: - result – id of the result (partition of ENA db), accessible with get_results
- verbose – boolean to define the printing info
Returns: dictionary with the keys being the fields ids and the values dictionary to describe the fields
-
enasearch.
get_filter_types
(verbose=False)[source]¶ Return the filters that can be used for the different type of data in a query on ENA
This function returns the filters that can be used for the different type of data (information available with the information on the filter fileds). For each type of data is given the operations applicable and a description of the type of expected values
Parameters: - result – id of the result (partition of ENA db), accessible with get_results
- verbose – boolean to define the printing info
Returns: dictionary with the keys being the type of data and the values dictionary to describe the filters for this type of data
-
enasearch.
get_result
(result, verbose=False)[source]¶ Return the description of a result (description, returnable and filter fields)
Parameters: - result – id of the result (partition of ENA db), accessible with get_results
- verbose – boolean to define the printing info
Returns: dictionary with a description of the result, the list of returnable fields and a dictionnary with the filter fields
-
enasearch.
get_results
(verbose=True)[source]¶ Return the possible results (type of data) in ENA (other than taxonomy)
Each result is described in a dictionary with a description of the result, the list of returnable fields associated with the result and a dictionnary with the filter fields associated with the result
Parameters: verbose – boolean to define the printing info Returns: a dictionary with the keys being the result ids and the values dictionary to describe the results
-
enasearch.
get_returnable_fields
(result, verbose=False)[source]¶ Return the returnable fields of a result
This function returns the list of fields that can be extracted for a result in a query on ENA
Parameters: - result – id of the result (partition of ENA db), accessible with get_results
- verbose – boolean to define the printing info
Returns: list of fields that can be extracted for a result
-
enasearch.
get_search_result_number
(free_text_search, query, result, need_check_result=True)[source]¶ Get the number of results for a query on a result
This function builds a query on ENA to extract the number of results matching the query on ENA
Parameters: - free_text_search – boolean to describe the type of query
- query – query string, made up of filtering conditions, joined by logical ANDs, ORs and NOTs and bound by double quotes
- result – id of the result (partition of ENA db), accessible with get_results
Returns: an integer corresponding to the number of results of a query on ENA
-
enasearch.
get_search_url
(free_text_search)[source]¶ Get the prefix for the URL to search ENA database
Parameters: free_text_search – boolean to describe the type of query Returns: a string with the prefix of an URL to search ENA database
-
enasearch.
get_sortable_fields
(result, verbose=False)[source]¶ Return the sortable fields of a result
This function returns the fields that can be used to sort the output of a query for a result on ENA. Each field is described in a dictionary with a short description and its type (text, number, etc).
Parameters: - result – id of the result (partition of ENA db), accessible with get_results
- verbose – boolean to define the printing info
Returns: dictionary with the keys being the fields ids and the values dictionary to describe the fields
-
enasearch.
get_taxonomy_results
(verbose=False)[source]¶ Return description about the possible results accessible via the taxon portal.
Each taxonomy result is described with a short description.
Parameters: verbose – boolean to define the printing info Returns: a dictionary with the keys being the result ids and the values dictionary to describe the results
-
enasearch.
load_object
(filepath)[source]¶ Load object from a pickle file
Parameters: filepath – path to pickle file with serialized data
-
enasearch.
request_url
(url, display, file=None)[source]¶ Run the URL request and return content or status
This function tooks an URL built to query or extract data from ENA and apply this URL. If a filepath is given, the function puts the result into the file and returns the status of the request. Otherwise, the results of the request is returned by the function in different format depending of the display format
Parameters: - url – URL to request on ENA
- display – display option
- length – number of records to retrieve
- file – filepath to save the content of the search
Returns: status of the request or the result of the request (in different format)
-
enasearch.
retrieve_analysis_report
(accession, fields=None, file=None)[source]¶ Retrieve analysis report from ENA
Parameters: - accession – accession id
- fields – comma-separated list of fields to have in the report (accessible with get_returnable_fields with result=analysis)
- file – filepath to save the content of the report
Returns: requested run repor
-
enasearch.
retrieve_data
(ids, display, download=None, file=None, offset=None, length=None, subseq_range=None, expanded=False, header=False)[source]¶ Retrieve ENA data (other than taxon)
This function retrieves data (other than taxon) from ENA by:
- Building the URL based on the ids to retrieve and some parameters to format the results
- Requesting the URL to extract the data
Parameters: - ids – comma-separated identifiers for records other than Taxon
- display – display option to specify the display format (accessible with get_display_options)
- offset – first record to get
- length – number of records to retrieve
- download – download option to specify that records are to be saved in a file (used with file option, accessible with get_download_options)
- file – filepath to save the content of the search (used with download option)
- subseq_range – range for subsequences (limit separated by a -)
- expanded – boolean to determine if a CON record is expanded
- header – boolean to obtain only the header of a record
Returns: data corresponding to the requested ids and formatted given the parameters
-
enasearch.
retrieve_filereport
(accession, result, fields=None, file=None)[source]¶ Retrieve a file (run or analysis) report
This function builds an URL to retrieve file (run or analysis) report from ENA and return the result of the request.
Parameters: - accession – accession id
- result – read_run for a run report or analysis for an analysis report
- fields – comma-separated list of fields to have in the report
- file – filepath to save the content of the report
Returns: requested file report
-
enasearch.
retrieve_run_report
(accession, fields=None, file=None)[source]¶ Retrieve run report from ENA
Parameters: - accession – accession id
- fields – comma-separated list of fields to have in the report (accessible with get_returnable_fields with result=read_run)
- file – filepath to save the content of the report
Returns: requested run report
-
enasearch.
retrieve_taxons
(ids, display, result=None, download=None, file=None, offset=None, length=None, subseq_range=None, expanded=False, header=False)[source]¶ Retrieve data from the ENA Taxon Portal
This function retrieves data (other than taxon) from ENA by:
- Formatting the ids to query then on the Taxon Portal
- Building the URL based on the ids to retrieve and some parameters to format the results
- Requesting the URL to extract the data
Parameters: - ids – comma-separated taxon identifiers
- display – display option to specify the display format (accessible with get_display_options)
- result – taxonomy result to display (accessible with result)
- offset – first record to get
- length – number of records to retrieve
- download – download option to specify that records are to be saved in a file (used with file option, accessible with get_download_options)
- file – filepath to save the content of the search (used with download option)
- subseq_range – range for subsequences (limit separated by a -)
- expanded – boolean to determine if a CON record is expanded
- header – boolean to obtain only the header of a record
Returns: data corresponding to the requested ids and formatted given the parameters
-
enasearch.
search_all_data
(free_text_search, query, result, display, download=None, file=None)[source]¶ Search ENA data and get all results (not size limited)
This function
- Extracts the number of possible results for the query
- Extracts the all the results of the query (by potentially running several times the search function)
Parameters: - free_text_search – boolean to describe the type of query
- query – query string, made up of filtering conditions, joined by logical ANDs, ORs and NOTs and bound by double quotes
- result – id of the result (partition of ENA db), accessible with get_results
- display – display option to specify the display format
- download – download option to specify that records are to be saved in a file (used with file option)
- file – filepath to save the content of the search (used with download option)
Returns: all results of the request in a format defined in the parameters
-
enasearch.
search_data
(free_text_search, query, result, display, offset=None, length=None, download=None, file=None, fields=None, sortfields=None)[source]¶ Search ENA data
This function
- Builds the URL for a given query to search/extract data on ENA database
- Formats the results given the option defined
The number of results for the query is limited at <lengthLimit>
Parameters: - free_text_search – boolean to describe the type of query
- query – query string, made up of filtering conditions, joined by logical ANDs, ORs and NOTs and bound by double quotes
- result – id of the result (partition of ENA db), accessible with get_results
- display – display option to specify the display format (accessible with get_display_options)
- offset – first record to get
- length – number of records to retrieve
- download – download option to specify that records are to be saved in a file (used with file option)
- file – filepath to save the content of the search (used with download option)
- fields – comma-separated list of fields to return (only if display=report)
- sortfields – comma-separated list of fields to sort the results (only if display=report)
Returns: results of the request in a format defined in the parameters
Data¶
The fields and their description, the formats, etc were extracted manually and stored in csv file in enasearch_data. They were then serialized to be quickly imported in enasearch script.
To update them, you can check the corresponding section in Contributing.


This section provide more information about this implementation and some of the rationale for design decisions.
If a axis label string is provided, or autoscaling is requested, it is assumed that it should be displayed/acted on. So there functions have the effect of switching these options on, as if, for example:
x_autoscale(true);
y_label_on(true);
This avoids users providing an axis-label string and then wondering why it appears to have no effect.
It also avoids wasting plot space for empty labels.
It is still possible to switch these options off, for example with:
x_autoscale(false);
y_label_on(false);
Obviously these must come after the function call that switches the option on.
x_num_minor_ticks()
and x_num_minor_ticks()
are provided control the number of minor ticks between the major ticks.
There are a total of x_num_minor_ticks + 1 ticks for each major tick, for example, a major on 0, minor on 1,2,3,4, major on 5 ...
For integer usually binary, octal and hexadecimal, num_minor_ticks = 2[super]n -1 are useful, for example 1 if major ticks are even will give minor ticks on odd values), 3 if major on 0, minor on 1, 2, 3 and major on 4... 7 if major on 0, minor on 1,2,3,4,5,6,7 and major on 8 ... 15 if major on 0, minor on 1,2,3,4,5,6,7, 8,9,A,B,C,D,E,F, major on 0x10...
For decimal based values, num_minor_ticks 1, 4, 9 are useful, for example: 1 if major are even, major 0, minor 1, major 2 ... 4 if major on 0, minor on 1,2,3,4, major on 5 ... 9 if major on 0, minor on 1,2,3,4,5,6,7,8,9, major on 10 [/h4 Minor ticks]
SVG version 1.1 was used in the design of this version but SVG 1.2 draft specification is also available and appears to be final and designed to be backward compatible. No changes that affect the code produced have been detected from a quick perusal of this document. It is probable but untested that the SVG files produced will also comply with the Tiny SVG for mobiles specification.
SVG would be a flat format if it weren't for the <g> elements: these make it parse into a tree.
If each element has its own style (fill, stroke etc) then the .svg
file
size would be increased. (This style is used by other packages that output
SVG and often leads to larger file sizes).
So the group element is used with each type given an id to allow reference back to it.
svg_style_details.hpp contains a list of these groups, for example: PLOT_X_AXIS, PLOT_TITLE... indexing an array of string document id "yAxis", "title"...
and these can be seen, with style information in the output, for example:
<g id="yAxis" stroke="rgb(0,0,0)"></g> <g id="title"> <text x="250" y="20" text-anchor=" middle" font-size="20">Demo 1D plot</text></g>
In the general case, the most that occurs grouped together is the style information: axis lines all share the same style information, points in a series all share the same color information, and this is also a logical grouping. One can can add a series, and then come back later and change the <g> element above the points, which is a single change, and have the change reflected on every point in the series. It seems this is the most logical way to represent the data in memory.
Some of the factors affecting the file size are:
If plots are to be viewed only at a modest size, then the precision of x and y coordinates does not need to be higher than about 1 in 1000, so a precision of about 3 decimal digits will suffice.
A default of 3 decimal digits has been chosen, but the precision can be controlled to permit a higher resolution, for example on a map that is printed at 2000 dpi. or even only 2 decimal digits for a display on a mobile, where file transfer speed may make reducing file size important.
Plotting extremely large datasets from files may cause memory overflow, as with any STL container held in memory. It may be necessary to perform some averaging or smoothing, or just using a 'stride' to select, for example, every 100th value to be plotted.
The use of the g or group element has been used to try to reduce repeated (and thus redundant) style specifications. More efficient use of groups may be possible.
Some effort has been made to use defaults, but more may be possible.
Several ways of adding useful information to the svg document are provided. If the strings are null (the default) nothing is output.
Member function svg& description(const std::string) allows output like:
<desc>My Document description</desc> svg& document_title(const std::string) <title>My Document title</title>
(Note that this is not the same as the title of the plot.)
In general, setting values for items like copyright_holder will ensure that they appear in the SVG document both as XML and as XML comment. If none are set, nothing will be output, to minimize file size.
www.w3.org/TR/2004/WD-SVG12-20041027 discusses primary documents, of type .svg in section 17.3.
Adding Copyright information to an SVG document: SVG encourages the use of a common metadata format for inclusion of copyright information. Metadata relevant to the data copyright of the entire document should be added to metadata element of the topmost svg element. This allows the author to unambiguously state the licensing terms for the entire document. The scheme may also be used elsewhere in the document, for pieces that have different licensing. For example, an SVG font may have specific licensing details expressed in its own metadata element.
Note that inclusion of this metadata does not provide the author with a method in which to protect or enforce their copyright, it simply bundles the copyright information with the content in a defined manner. Providing methods, technical or non-technical, for data protection is currently beyond the scope of the SVG specification.
This does not exclude the use of other metadata schemes.
A simple way of adding metadata for copyright is provided by functions to set
copyright_holder(std::string); copyright_date(std::string);
(as well as description and document_title, and .svg filename if any).
For example, setting these will incorporate an XML comment

and also as meta data:
<meta name="copyright" content="Paul A. Bristow" /> <meta name="date" content="2014" />
The Creative Commons Metadata Set is also provided as an option in this implementation, following this example.
The Creative Commons License is one method of providing license terms in a machine-readable format.
Typical data added to the file would be XML like this:
<metadata> <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <cc:work rdf:about="filename.svg">  <dc:title>Plot title</dc:title> <dc:creator>Boost.Plot</dc:creator> <dc:author>Paul A. Bristow</dc:author> <dc:format>application/xhtml+xml+svg</dc:format> <cc:license rdf:about="http://creativecommons.org/licenses/by-sa/.0/"> <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/> <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/> <cc:permits rdf:resource="http://web.resource.org/cc/CommercialUse"/> </cc:license> </cc:work> </rdf:RDF> </metadata>
cc:permits can also be cc:requires or cc:prohibits, as required.
A license that permits reproduction, distribution and commercial use, but requires both notice & attribution is probably most suitable for Boost documents as is therefore chosen as the default.
This license can be included by calling svg member function is_license(true)
. If
this license will be included can be discovered by calling svg member function
is_license()
.
Similarly functions const std::string license_reproduction(); const std::string license_distribution(); const std::string license_attribution(); const std::string license_commercialuse() allow you to find the current license requirements.
RDF is the metadata format chosen by Creative Commons.
and references the resource (cc) at http://web.resource.org/cc/ using the definition of its XML namespace:
rdf:RDF xmlns:cc="http://web.resource.org/cc/"
Options are summarized.
A way of seting the author is also provided, in case the copyright has been assigned to someone else, for example a publisher. svg set and get member functions:
author(const std::string); const std::string author();
Unicode symbols that work on most browsers in html are listed in some Quickbook files:
..../doc/html4_symbols.gbk ....doc/latin1_symbols.qbk ..../doc/math_symbols.qbk
reference/html40/entities/symbols, and demos.
However support for Unicode in SVG is much less fully implemented and displayed results are variable.
The Unicode value in decimal 9830 or hex x2666 must be prefixed with &
and terminated with ;
for example, &x2666
;
for xml and then enveloped with "" to convert to a const std::string,
for example: "♦" for diamond.
Thus diamond can be used a point marker.
Similarly for greek in title, legend and axes:
.legend_title("My Legend μ") // generates μ greek mu
It is very common need to show superscript, in units for example, area (m[super 2]), and subscript for a[sub 0], a[sub 2]...
Sadly, although these needs are both OK with html, showing sub and superscripts in svg doesn't work well as yet because browsers don't handle  or , nor baseline-shift.
The only reasonably widely supported feature is Unicode symbols for superscript 1, 2 and 3 (only). For example, Latin1_symbols: sup1 &185; sup2 &178; sup3 &179; work on Firefox & IE6/7.
Butࠗ ࠛ ࠪ - show just square boxes.
The SVG specification covers <sub, <super>, and the general baseline-shift, but these are just not implemented yet.
2.8 Superscripts and Subscripts symbols
At Nov 2007, the following commands don't have very useful coverage. <tspan baseline-shift = "50%" font-stretch = "wider" font-variant = "small-caps" > 3 </tspan> baseline-shift = "50%" & super and subscript down't work on Firefox 2. but DO on IE6 (and probably 7) font-stretch = "wider" No effect Firefox or IE6. font-variant = "small-caps" No effect Firefox or IE6. <tspan baseline-shift = "50%" >3/4 </tspan>
This has been reported as a bug to Mozilla, and is regarded a duplicate of other reports on sub and super https://bugzilla.mozilla.org/show_bug.cgi?id=401102
but baseline-shift has no effect on Firefox 2. See http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=7410&view=previous
The use of <tspan to shift characters is feasible, as shown in this example, which displays correctly in all browsers,
and it is also possible to use
<svg:g transform="translate(5.062500, -5.367188)">
to shift the next letter up, but these parameters are font-size related,* and the svg most verbose.
None of these method provides a convenient method of creating the right string for titles, legends, or axis labels, but it may be possible to devise code that does.
/boost/libs/svg_plot/wcwidth.c is an implementation of wcwidth() and wcswidth() (defined in IEEE Std 1002.1-2001) for Unicode.
http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html
In fixed-width output devices, Latin characters all occupy a single "cell" position of equal width, whereas ideographic CJK (Chinese, Japanese and Korean ) Unified Ideographs
occupy two such cells. Interoperability between terminal-line applications and (teletype-style) character terminals using the UTF-8 encoding requires agreement on which character should advance the cursor by how many cell positions. No established formal standards exist at present on which Unicode character shall occupy how many cell positions on character terminals. These routines are a first attempt of defining such behavior based on simple rules applied to data provided by the Unicode Consortium.
For some graphical characters, the Unicode standard explicitly defines a character-cell width via the definition of the East Asian FullWidth (F), Wide (W), Half-width (H), and Narrow (Na) classes. In all these cases, there is no ambiguity about which width a terminal shall use. For characters in the East Asian Ambiguous (A) class, the width choice depends purely on a preference of backward compatibility with either historic CJK or Western practice. Choosing single-width for these characters is easy to justify as the appropriate long-term solution, as the CJK practice of displaying these characters as double-width comes from historic implementation simplicity (8-bit encoded characters were displayed single-width and 16-bit ones double-width, even for Greek, Cyrillic, etc.) and not any typographic considerations.
Much less clear is the choice of width for the Not East Asian (Neutral) class. Existing practice does not dictate a width for any of these characters. It would nevertheless make sense typographically to allocate two character cells to characters such as for instance EM SPACE or VOLUME INTEGRAL, which cannot be represented adequately with a single-width glyph. The following routines at present merely assign a single-cell width to all neutral characters, in the interest of simplicity. This is not entirely satisfactory and should be reconsidered before establishing a formal standard in this area. At the moment, the decision which Not East Asian (Neutral) characters should be represented by double-width glyphs cannot yet be answered by applying a simple rule from the Unicode database content. Setting up a proper standard for the behavior of UTF-8 character terminals will require a careful analysis not only of each Unicode character, but also of each presentation form, something the author of these routines has avoided to do so far.
http://www.unicode.org/unicode/reports/tr11/
Markus Kuhn -- 2007-05-26 (Unicode 5.0)
Permission to use, copy, modify, and distribute this software for any purpose and without fee is hereby granted. The author disclaims all warranties with regard to this software.
Latest version: wcwidth.c
In general Boost coding style guide and Boost coding guidelines has been used.
Some data members end with _ to avoid name clashes, another widely used convention.


 I’ve always been rather scepticle of the IOT movement and would rather not receive emails signed “yours truly, the toaster”, but sometimes you have to just go with the flow.
Thus begun a project with some electronics, woodwork and programming, hours of fun…
The concept for the project was to produce an “clock” which rather than relaying the time would convey the current exchange rate of Bitcoin to USD. Following a little feature creep an android app to configure the price source and frequency of update along with upper and lower alarm bounds as well as additional currencies was added.
The Electronic Hardware
- ESP8266 microcontroller module with serial to USB
- SSD1306 128*64 monochrome OLED display
- Passive piezo buzzer module with transistor driver
The microchip is supported by the Arduino IDE via an addon. The module includes breakouts of all the pins and an interface to USB to program the chip. Life never used to be this easy, in the past you could spend days just figuring out how to power, program and erase microchips.
Straight to Coding
The coding went fast as libraries were available for the screen and the Arduino IDE abstracts much of what would once have had to be gleaned from datasheets. The basic elements of the code are as follows:
- Setup serial connection for debug messages.
- Use the WifiManager library to either connect to the internet or start an access point with captive portal to allow the user to configure SSID/password.
- Get the price from an online price feed by connecting to the remote server
and storing the response for further processing.
- Discard everything returned by the server bar the JSON data that we need. As JSON data is delivered in curly braces “{}”, we only have to parse the servers response until the opening brace is found.
- Use the ArdiunoJSON Library to parse the result and extract the price.
- Display the price!
The full code is available on my github repository. Please feel free to point out momentously stupid errors at will.
Making an Enclosure
Now to the hard part.
I spent a good few days mulling over how to make a nice case for this project. Not everyone has a 3D printer and CNC lying around.
To create a curved fascia for the screen I decided to try laminating some Mahogany veneer I had lying around. To do this one creates a mould and applies glue to multiple layers of veneer before clamping them in the form.
The veneers are only 0.6mm thick and bend easily without breaking with the grain orientated perpendicular to the curve. A good amount of dry soap can be rubbed on the form to prevent any excess glue sticking to it.
Once the glue is dried the veneers will retain the shape of the form. This is basically a home made plywood of the mahogany variety (not available at your local builders merchant).
The rosewood sides are backed by some ply and glued onto the the fascia.
A wooden block in the vice behind the fascia allows the opening for the screen to be chiselled out with just a few careful blows from a mallet.
The rosewood used here is a am old saw cut veneer about 1.5mm thick and is brittle. Accordingly it has been glued onto a maple backing veneer to make it easier to work with. In the picture is also a ply template used to mark and outline of the faceplate.
The face plate glued in position.
I chose to use brass rod to attach the screens mounting holes to the case. Getting the alignment correct is somewhat difficult. I start with one corner drilled and then run a short program to draw a rectangle and two diagonal lines from corner to corner. The screen can then be adjusted and the holes for drilling marked.
Available on OpenBazaar @ ob://@rabfulton/store
Or see here to view in your web browser.


DAYREC
This was my second group project, We created an application that allowed our class to submit bets on how many times our Instructor forgot to share his screen or recoed the session.
Eat Da Burger!
This is a simple MVC Express app using MySQL that lets you add names of burgers you would like to eat.
Day Planner
A simple calendar app for scheduling your work day. Add or delete your tasks in the desired time slot and click save.
Restaurant Dashboard
This was my first group project utilizing the Yelp and Google APIs. User can search for restaurants in a zip code and can save favorites.
Weather Dashboard
Utilizes the OpenWeather API to retrieve and store current and 5 day weather forecast based on user entered zip code.
Code Quiz
Answer the questions as quickly as you can but be careful, one wrong answer will cost you 10 seconds. Try to beat your own high score with the most time left.


"REREWARD "(Joshua 6:9), the troops in the rear of an army on the march, the rear-guard. This word is a corruption of the French arriere-garde. During the wilderness march the tribe of Dan formed the rear-guard (Numbers 10:25; comp. 1 Samuel 29:2; Isaiah 52:12; 58:8).
"REREWARD "(Joshua 6:9), the troops in the rear of an army on the march, the rear-guard. This word is a corruption of the French arriere-garde. During the wilderness march the tribe of Dan formed the rear-guard (Numbers 10:25; comp. 1 Samuel 29:2; Isaiah 52:12; 58:8).


Hello World
Thank you for trying out Edje framework. To compile the Sass, follow the documentation at https://hrsetyono.github.io/edje.
If you have any question, feel free to tweet me @hrsetyono92
Thank you for trying out Edje framework. To compile the Sass, follow the documentation at https://hrsetyono.github.io/edje.
If you have any question, feel free to tweet me @hrsetyono92
Yellow background
Blue border
Red text
Yellow 10% background
Blue 50% border
Red 50% text


Page1 Contents
Page2 Contents
Page3 Contents
This card shows some content on the front and some on the back, and can be flipped by hovering on a desktop, or by swiping across on a touch device.
The back of the card is intentionally long, so that we can show both an example where the card is constrained to a square and where it is as long as the content on either side requires.
This card shows some content on the front and some on the back, and can be flipped by hovering on a desktop, or by swiping across on a touch device.
The back of the card is intentionally long, so that we can show both an example where the card is constrained to a square and where it is as long as the content on either side requires.


bookmarks
a growing collection of bioinformatics websites or tutorials
(updated on Jan. 23rd 2019)
- R books
- Data Science for Psychologists
- STAT 545: Data wrangling, exploration, and analysis with R
- A Compendium of Clean Graphs in R: a guideline of producing clean and explicit graphs using R.
- R for Data Science: a practical online book introducing the basic data analysis in R.
- Bioinformatics
- Modern Statistics for Modern Biology a course and book written by Susan Holmes and Wolfgang Huber, teaching statistics using R and Bioconductor packages
- An Introduction to Applied Bioinformatics: an open source bioinformatics tutorial/book written using IPython Notebook, it “introduces readers to core concepts of bioinformatics in the context of their implementation and application.”
- Rosalind: a website where you can learn bioinformatics through solving bioinformatics problems.
- Bioinformatics.ca: a website where you can find workshops on programming in R, Metagenomic/Genomic/RNA-Seq/Pathway data analysis.
- BIRS workshop lecture videos: many workshop lecture videos on statistics, computer science, mathematics, biology and so on.
- GUSTA ME: standard procedures you need to do statistical analysis of microbial ecology.
- PH525x series - Biomedical Data Science: the statistics book of bioinformatics data analysis, written by Rafael Irizarry and Michael Love.
- Discovering Patterns in the Microbiome: a course given by Dan Knights of analyzing 16S microbiome data using QIIME. The course videos can be found here.
- ngs-docs: a lot of hands-on bioinformatics training repositories hosted at github.
- treethinkers: workshops and tutorials on applied phylogenetics.
- evomics: workshops and practical tutorials on genomics and molecular evolution.
- A Primer for Computational Biology: An open-access online book on linux command line, Python and R programming written by Dr. Shawn T. O’Neil.
- Analysis of single cell RNA-seq data: A very timely course on single-cell RNA-Seq (scRNA-Seq) data analysis


2011 12 02
Sugar is a poison and should be regulated
Robert H. Lustig, MD gives a lecture exploring the damage caused by sugary foods:
Please enable JavaScript to view the
comments powered by Disqus.
blog comments powered by
Disqus


Ghost 2D
View 3D Model
View 3D Model
Wireframe
Design Details
Joint Parameters
Fabrication Canvas
Save & Export
New Document
Design Details
Caps:
Top
Bottom
Number of Sides:
−
6
+
Twist:
-1.0
-0.5
0.0
+0.5
+1.0
Joint Parameters
Joint Type:
Fabrication Canvas
Units:
mm
inch
Number of Canvas(es):
−
1
+
Canvas Size (
)
Width:
Height:
set canvas size
Save & Export
Filename:
save file
export SVG
Wall thickness:
export STL
New Document
Number of Sides:
−
6
+
Number of Layers:
−
4
+
generate new file
load file
Fabrication Mode [2]
Design Mode [3]
Pull Points [e]
Arrange Parts [r]
Add Points [a]
Remove Points [s]
Split Parts [s]
Fuse Parts [f]
Scale Design [c]
Measure [m]
Pan [space]


Ofcom could investigate Kay Burley ’empty chairing’ James Cleverly
Ofcom may investigate Kay Burley’s “empty chairing” of James Cleverly.
The media watchdog has received numerous complaints regarding the Sky News presenter’s actions.
Burley claimed the Conservative Party chairman missed a planned appearance on her breakfast show, although the Tory MP responded that he was not in fact due to appear.
The empty chair “interview” conducted by Burley, who addressed a vacant seat with planned questions for the Tory politician, has so far promoted 23 official complaints to Ofcom.
Complaints are understood by PA new agency to relate to Burley’s claims and the empty chair gesture.
A spokeswoman for Ofcom said: “We are assessing these against our broadcasting rules before deciding whether or not to investigate.”
Sitting next to a vacant seat which she said was “supposed to be filled” by the politician, Burley said: “Where is he? He’s probably 15ft away from where I’m standing just at the moment.
“I’ve been in to see him during the break, he said he wasn’t due to come and talk to us today although they had said that they would talk to us.”
Burley then listed a number of topics she had hoped to discuss with Mr Cleverly, including Jacob Rees-Mogg’s recent controversial comments about the Grenfell Tower tragedy and Prime Minister Boris Johnson’s comparison of Labour leader Jeremy Corbyn to Joseph Stalin.
“I know that Number 10 Downing Street watch our show,” Burley said.
READ MORE
Kay Burley ’empty chairs’ James Cleverly after Tory chairman’s no-show
“I know that the spin doctors at Number 10 Downing Street had absolutely reassured me via text that when politicians were doing the rounds in the morning, they would be doing this programme – and yet, we have an empty chair.”
Mr Cleverly responded to Burley’s claims during a TalkRadio interview with Julia Hartley-Brewer.
“We hadn’t booked in to go on her show, and I was sitting in this studio preparing to talk to you, as I’m now doing, and she said, ‘I want you to come on my show now’,” he said.
“I like to think I’m a pretty decent multitasker, but I cannot physically be in two places at the same time.”
Burley later tweeted: “He ducked us on the media round but then said yes to my team when we tracked him down.”
READ MORE
Jeremy Corbyn begins campaign with vow to make private schools pay tax


continue
statements with labels.
Labeled continue
statements complicate refactoring, and can be confusing.
Example:
void handle(List<String> strs) { outer: for (String s: strs) { for (char ch : s.toCharArray()) { if ('s' == ch) continue outer; handleChar(ch); } } }


Education is at the heart of the Python community, after all, Guido van Rossum himself (the inventor of Python) tells us that Python was created as a language for anyone to use.
For the fourth year in a row, we're organising a set of activities for learners of all ages, abilities and backgrounds. The Python community is open to all and we want to support, cherish and foster our newest members.
We have something for everyone:
On Friday
Teachers
We look forward to welcoming our teaching colleagues for a day of training, collaboration, resource writing and networking in a friendly yet fun environment where we aim to help teachers get the most out of Python.
The picture above is from a workshop for both teachers and developers where we all learned about object oriented programming.
This year we're welcoming back the Raspberry Pi Foundation education team and Jam Packed to help us run the training.
Sign up here and purchase a teacher's ticket.
Trans*Code
Trans*Code is for trans* people and allies who want to draw attention to issues facing women and the transgender community while providing introductory programming workshops. Participants drawn from all skill levels and backgrounds are welcome.
The video above (created for ComputerWeekly) gives you a flavour of the sorts of things you can expect from the day.
To register your interest in attending please fill in this form.
Django Girls
Django Girls will be running a Python and Django workshop designed to inspire women to fall in love with programming.
Their mission is to bring more amazing women into the world of technology and increase the diversity of our community. They believe that technology is for people and everyone should be able to build it. They make technology more approachable by creating simple tools and resources designed with empathy.
To register your interest in attending please fill in this form.
Saturday
Kids' Day
We will be holding a Raspberry Jam where participants of all ages will get to play, code, learn and share all things programming in Python on a RaspberryPi and any other device we can get to work.
We aim to run various workshops aimed at young beginner Pythonistas throughout the day. These will include web design, robotics, Minecraft and physical computing. Our aim is to turn excited kids into exhausted but inspired proto-programmers. :-)
The cost is only £5 per child and parents/guardians get in for free. Book here.


My career started as a really young child, always helping others in many walks of life. But i never really realized until in eight grade when i went to a prosthetics seminar and instantly fell in love with the idea of designing things to help others succeed. I spent the summer after the eigth grade year at the Pennsylvania College of Technology living on campus for a 3-D printing and design summer camp. I left that camp knowing i was going back the next year, and spent the rest of my teenaged career taking design classes through my high school and local college.
Family and Home
To me: Family are the people around you who make you the happiest. It can be blood relation or friendships.
All of the poeple you see in the above photos motivated me hard to always do what makes me happiest. Those people are my blood family and closest relationships and they fill up the space in my life that i call home.
Family is the most important aspect of my life.
Entertainment
As i read the word entertainment i think about things to do and places to go with the people i love most in the world. My favorite forms of entertainment is to take a weekend out in the woods kayaking, hiking, or spending time away from electronics. While college keeps me in the electronic world, i would prefer to be away from media and more with the entertainment i prefer.
Community
Community to me is a place where people come together to go through life together, and it has been a huge part of my life in many ways. As a child community was just sports, girl scouts, and awana, all things that i liked. But, as i grew up the communities grew up with me. Throughout the rest of my life i have been in countless organizations spanning multiple different genres of life. But I have found that true community is coming together, doing something together, and having fun together.
School
Schooling for me was always easy and never really mattered, until the eigth grade. From the eighth grade I have tried to pushed myself and bettered myself through my studies. I pushed myself to take honors courses, and college courses throughout all of high school and constantly pushed myself to have a good understanding and footing in the subject matters.
Not only is school the 8:00am-3:30pm building i went to, it is everything that i learned in life.
Schooling is the fire department courses, and wilderness first aid courses that i took for months. But it is also the at home "how to cook" and "how to be a good caregiver" classes.


Count
public enum Count : ExpressibleByIntegerLiteral
extension Count: CustomStringConvertible
extension Count: Countable
Count enum. Use it for all Verify features, when checking how many times something happened.
There are three ways of using it:
- Explicit literal - you can pass 0, 1, 2 … to verify exact number
- Using predefined .custom, to specify custom matching rule.
- Using one of predefined rules, for example:
- .atLeastOnce
- .exactly(1)
- .from(2, to: 4)
- .less(than: 2)
- .lessOrEqual(to: 1)
- .more(than: 2)
- .moreOrEqual(to: 3)
- .never
-
Count matching closure
Declaration
Swift
public typealias CustomMatchingClosure = (_ value: Int) -> Bool
-
[Internal] Count is represented by integer literals, with type Int
Declaration
Swift
public typealias IntegerLiteralType = Int
-
Called at least once
Declaration
Swift
case atLeastOnce
-
Called exactly once
Declaration
Swift
case once
-
Custom count resolving closure
Declaration
Swift
case custom(CustomMatchingClosure)
-
Called exactly n times
Declaration
Swift
case exactly(Int)
-
Called in a…b range
Declaration
Swift
case from(Int, to: Int)
-
Called less than n times
Declaration
Swift
case less(than: Int)
-
Called less than ot equal to n times
Declaration
Swift
case lessOrEqual(to: Int)
-
Called more than n times
Declaration
Swift
case more(than: Int)
-
Called more than ot equal to n times
Declaration
Swift
case moreOrEqual(to: Int)
-
Never called
Declaration
Swift
case never
-
Creates new count instance, matching specific count
Declaration
Swift
public init(integerLiteral value: IntegerLiteralType)
Parameters
value
Exact count value
-
Human readable description
Declaration
Swift
public var description: String { get }
-
Returns whether given count matches countable case.
Declaration
Swift
public func matches(_ count: Int) -> Bool
Parameters
count
Given count
Return Value
true, if it is within boundaries, false otherwise


Enter your data to generate a NZBLNK™ link. Press a copy button to copy the link into your clipboard. Mandatory fields are marked (*). You can also drop a NZB file on this website.


|
PU2CLR RDA5807 Arduino Library
1.0.1
Arduino Library for RDA5807 Devices - By Ricardo Lima Caratti
|
Functions | |
| void | RDA5807::setI2CBusAddrs (int directAccess, int fullAccess) |
| Sets alternatives I2C bus address. More... | |
| void | RDA5807::setGpio (uint8_t gpioPin, uint8_t gpioSetup=0, int mcuPin=-1) |
| Set the Device GPIO pins. More... | |
| void | RDA5807::getStatusRegisters () |
| Gets all current device status and RDS information registers (From 0x0A to 0x0F) More... | |
| void * | RDA5807::getStatus (uint8_t reg) |
| Gets the register content of a given status register (from 0x0A to 0x0F) More... | |
| void | RDA5807::setRegister (uint8_t reg, uint16_t value) |
| Sets a given value to a specific device register. More... | |
| void | RDA5807::waitAndFinishTune () |
| Waits for Seek or Tune finish. More... | |
| void | RDA5807::softReset () |
| Resets the device. More... | |
| void | RDA5807::powerUp () |
| Powers the receiver on. More... | |
| void | RDA5807::powerDown () |
| Power the receiver off. More... | |
| void | RDA5807::setup (uint8_t clock_type=CLOCK_32K, uint8_t oscillator_type=OSCILLATOR_TYPE_CRYSTAL) |
| Starts the device. More... | |
| void | RDA5807::setChannel (uint16_t channel) |
| Sets the channel. More... | |
| void | RDA5807::setFrequency (uint16_t frequency) |
| Sets the frequency. More... | |
| void | RDA5807::setFrequencyUp () |
| Increments the current frequency. More... | |
| void | RDA5807::setFrequencyDown () |
| Decrements the current frequency. More... | |
| uint16_t | RDA5807::getFrequency () |
| Gets the current frequency. More... | |
| uint16_t | RDA5807::getRealChannel () |
| Gets the current channel stored in 0x0A status register. More... | |
| uint16_t | RDA5807::getRealFrequency () |
| Gets the current frequency bases on the current channel. More... | |
| void | RDA5807::seek (uint8_t seek_mode, uint8_t direction) |
| Seek function. More... | |
| void | RDA5807::seek (uint8_t seek_mode, uint8_t direction, void(*showFunc)()) |
| Seek function. More... | |
| void | RDA5807::setSeekThreshold (uint8_t value) |
| Sets RSSI Seek Threshold. More... | |
| void | RDA5807::setBand (uint8_t band=1) |
| Sets the FM band. See table below. More... | |
| void | RDA5807::setSpace (uint8_t space=0) |
| Sets the FM channel space. More... | |
| int | RDA5807::getRssi () |
| Gets the current Rssi. More... | |
| void | RDA5807::setSoftmute (bool value) |
| Sets Soft Mute Enable or disable. More... | |
| void | RDA5807::setMute (bool value) |
| Sets Audio mute or unmute. More... | |
| void | RDA5807::setMono (bool value) |
| Sets audio Mono or stereo. More... | |
| void | RDA5807::setBass (bool value) |
| Sets Bass Boost. More... | |
| bool | RDA5807::isStereo () |
| Gets the current Stereo status. More... | |
| void | RDA5807::setVolume (uint8_t value) |
| Sets the audio volume level. More... | |
| uint8_t | RDA5807::getVolume () |
| Gets the current audio volume level. More... | |
| void | RDA5807::setVolumeUp () |
| Increments the audio volume. More... | |
| void | RDA5807::setVolumeDown () |
| Decrements the audio volume. More... | |
| uint8_t | RDA5807::getDeviceId () |
| Gets the Device identification. More... | |
| void | RDA5807::setFmDeemphasis (uint8_t de) |
| Sets De-emphasis. More... | |
|
inline |
Sets alternatives I2C bus address.
You do not need use this function on RDA5807M
| directAccess | |
| fullAccess |
References RDA5807::deviceAddressDirectAccess, and RDA5807::deviceAddressFullAccess.
| void RDA5807::setGpio | ( | uint8_t | gpioPin, |
| uint8_t | gpioSetup = 0 , |
||
| int | mcuPin = -1 |
||
| ) |
Set the Device GPIO pins.
This method is useful to add control to the system via GPIO RDA devive pins.
For example: You can use these pins to control RDS and SEEK via interrupt.
GPIOs are General Purpose I/O pin.
GPIO setup
When gpioPin is 1; gpioSetup can be: 00 = High impedance; 01 = Reserved; 10 = Low; 11 = High
When gpioPin is 2; gpioSetup can be: 00 = High impedance; 01 = Interrupt (INT) 10 = Low; 11 = High
When gpioPin is 2; gpioSetup can be: 00 = High impedance; 01 = Mono/Stereo indicator (ST) = Low; 11 = High
| gpioPin | gpio number (1, 2 or 3) |
| gpioSetup | See description above |
| mcuPip | MCU (Arduino) pin connected to the gpio |
| void RDA5807::getStatusRegisters | ( | ) |
Gets all current device status and RDS information registers (From 0x0A to 0x0F)
Referenced by RDA5807::getRdsFlagAB(), RDA5807::getRdsGroupType(), RDA5807::getRdsProgramType(), RDA5807::getRdsText(), RDA5807::getRdsText0A(), RDA5807::getRdsText2A(), RDA5807::getRdsText2B(), RDA5807::getRdsTime(), and RDA5807::getRdsVersionCode().
| void * RDA5807::getStatus | ( | uint8_t | reg | ) |
Gets the register content of a given status register (from 0x0A to 0x0F)
Useful when you need just a specific status register content.
This methos update the first element of the shadowStatusRegisters linked to the register
| void RDA5807::setRegister | ( | uint8_t | reg, |
| uint16_t | value | ||
| ) |
Sets a given value to a specific device register.
| reg | register number (valid values is between 0x02 and 0x07) |
| value | the unsigned 16 bits word value (see rda_rec0x data types) |
| void RDA5807::waitAndFinishTune | ( | ) |
Waits for Seek or Tune finish.
Referenced by RDA5807::seek(), and RDA5807::setChannel().
| void RDA5807::softReset | ( | ) |
Resets the device.
The RDA5807M is RESET itself When VIO is Power up.
Also, it support soft reset by triggering the 0x02 register (rda_reg02) bit 1 from 0 to 1.
| void RDA5807::powerUp | ( | ) |
Powers the receiver on.
Referenced by RDA5807::setup().
| void RDA5807::powerDown | ( | ) |
Power the receiver off.
| void RDA5807::setup | ( | uint8_t | clock_type = CLOCK_32K , |
| uint8_t | oscillator_type = OSCILLATOR_TYPE_CRYSTAL |
||
| ) |
Starts the device.
| clock_type | Clock used. |
| oscillator_type | optional. Sets the Oscillator type used (Default Crystal or Ref. Clock). |
References RDA5807::powerUp().
| void RDA5807::setChannel | ( | uint16_t | channel | ) |
Sets the channel.
This method tunes the rteceiver in a given channel.
The channel can be calculated by using the follow formula
channel = (desired frequency - start band frequency) / space channel in use / 10.0);
| channel |
References RDA5807::waitAndFinishTune().
| void RDA5807::setFrequency | ( | uint16_t | frequency | ) |
Sets the frequency.
| frequency |
| void RDA5807::setFrequencyUp | ( | ) |
Increments the current frequency.
The increment uses the band space as step. See array: uint16_t fmSpace[4] = {100/10, 200/10, 50/10, 25/10};
| void RDA5807::setFrequencyDown | ( | ) |
Decrements the current frequency.
The drecrement uses the band space as step. See array: uint16_t fmSpace[4] = {20, 10, 5, 1};
| uint16_t RDA5807::getFrequency | ( | ) |
Gets the current frequency.
| uint16_t RDA5807::getRealChannel | ( | ) |
Gets the current channel stored in 0x0A status register.
| uint16_t RDA5807::getRealFrequency | ( | ) |
Gets the current frequency bases on the current channel.
The current channel is stored in the 0x0A register. This value is updated after a tune or seek operation.
The current frequency can be calculated by the formula below
| Band | Formula |
|---|---|
| 0 | Frequency = Channel Spacing (kHz) x READCHAN[9:0]+ 87.0 MHz |
| 1 or 2 | Frequency = Channel Spacing (kHz) x READCHAN[9:0]+ 76.0 MHz |
| 3 | Frequency = Channel Spacing (kHz) x READCHAN[9:0]+ 65.0 MHz |
| void RDA5807::seek | ( | uint8_t | seek_mode, |
| uint8_t | direction | ||
| ) |
Seek function.
| seek_mode | if 0, wrap at the upper or lower band limit and continue seeking; 1 = stop seeking at the upper or lower band limit |
| direction | if 0, seek down; if 1, seek up. |
| void RDA5807::seek | ( | uint8_t | seek_mode, |
| uint8_t | direction, | ||
| void(*)() | showFunc | ||
| ) |
Seek function.
Seeks a station up or down.
Seek up or down a station and call a function defined by the user to show the frequency during the seek process.
Seek begins at the current channel, and goes in the direction specified with the SEEKUP bit. Seek operation stops when a channel is qualified as valid according to the seek parameters, the entire band has been searched (SKMODE = 0), or the upper or lower band limit has been reached (SKMODE = 1).
The STC bit is set high when the seek operation completes and/or the SF/BL bit is set high if the seek operation was unable to find a channel qualified as valid according to the seek parameters. The STC and SF/BL bits must be set low by setting the SEEK bit low before the next seek or tune may begin.
The SEEK bit is set low and the STC bit is set high when the seek operation completes.
It is important to say you have to implement a show frequency function. This function have to get the frequency via getFrequency function.
Example:
| seek_mode | Seek Mode; 0 = Wrap at the upper or lower band limit and continue seeking (default); 1 = Stop seeking at the upper or lower band limit. |
| direction | Seek Direction; 0 = Seek down (default); 1 = Seek up. |
| showFunc | function that you have to implement to show the frequency during the seeking process. Set NULL if you do not want to show the progress. |
References RDA5807::waitAndFinishTune().
| void RDA5807::setSeekThreshold | ( | uint8_t | value | ) |
Sets RSSI Seek Threshold.
| value |
| void RDA5807::setBand | ( | uint8_t | band = 1 | ) |
Sets the FM band. See table below.
FM band table
| Value | Description |
|---|---|
| 00 | 87–108 MHz (US/Europe) |
| 01 | 76–91 MHz (Japan) |
| 10 | 76–108 MHz (world wide) |
| 11 | 65 –76 MHz (East Europe) or 50-65MHz (see bit 9 of gegister 0x06) |
| band | FM band index. See table above. |
| void RDA5807::setSpace | ( | uint8_t | space = 0 | ) |
Sets the FM channel space.
Channel space table
| Value | Description |
|---|---|
| 00 | 100KHz |
| 01 | 200KHz |
| 10 | 50KHz |
| 11 | 25KHz |
| space | FM channel space. See table above. |
| int RDA5807::getRssi | ( | ) |
Gets the current Rssi.
RSSI; 000000 = min; 111111 = max; RSSI scale is logarithmic.
| void RDA5807::setSoftmute | ( | bool | value | ) |
Sets Soft Mute Enable or disable.
| value | true = enable; false=disable |
| void RDA5807::setMute | ( | bool | value | ) |
Sets Audio mute or unmute.
| value | TRUE = mute; FALSE = unmute |
| void RDA5807::setMono | ( | bool | value | ) |
Sets audio Mono or stereo.
| value | TRUE = Mono; FALSE force stereo |
| void RDA5807::setBass | ( | bool | value | ) |
Sets Bass Boost.
| value | FALSE = Disable; TRUE = Enable |
| bool RDA5807::isStereo | ( | ) |
Gets the current Stereo status.
| void RDA5807::setVolume | ( | uint8_t | value | ) |
Sets the audio volume level.
| value |
| uint8_t RDA5807::getVolume | ( | ) |
Gets the current audio volume level.
| void RDA5807::setVolumeUp | ( | ) |
Increments the audio volume.
| void RDA5807::setVolumeDown | ( | ) |
Decrements the audio volume.
| uint8_t RDA5807::getDeviceId | ( | ) |
| void RDA5807::setFmDeemphasis | ( | uint8_t | de | ) |
Sets De-emphasis.
75 μs. Used in USA (default); 50 μs. Used in Europe, Australia, Japan.
| de | 0 = 75 μs; 1 = 50 μs |


{% extends "admin/change_form.html" %} {% load i18n admin_urls admin_extras %} {% load staticfiles %} {% load static %} {% block content %}
You can only add process data logger file records one per data logger file. If you need to change an FTP datalogger file, delete the old one and add a new one. This helps prevent duplicate records from being created.
See the CZ Manager docs for a description of how to use datloggerfiles. Using data logger files
{{ block.super }} {% endblock %}


This app lets you pick random mannas from a compilation of over two thousand awesome Bible passages.
Truly random
We use advanced cryptographics to make sure the manna you get is truly random.
1000 languages
Choose your favorite Bible-version from a list of over one thousand languages.
Stored history
The ten previous mannas you picked are stored, in case you wish to have a second look. Just use the arrows near the bottom of the screen.
Open source
The code behind this app is fully open-source. Feel free to check out how the code works, or help us make the app even better!
Your selected Bible:
Warning: This translation does not contain all the 66 books of the Bible and the selection of mannas will be limited. We will still provide you with mannas from all the available books.
To add this app to your home screen, please navigate to this web page via the Safari browser. Then tap the Share button at the bottom of the browser window. It looks like a square with an up-arrow in the foreground. Select the option labeled Add to Home Screen (scroll to the right if you don’t see it).
If you're using the Chrome browser, you should already have received a request for adding this app to your home screen. If not, please open up the menu and tap Add to Home Screen. If you're using the Firefox browser, simply tap the house icon right next to the address bar.
To add this app to your home screen, please navigate to this web page via the default Windows browser. Then open up the menu and tap Pin to start.
We're sorry, but we did not recognize your mobile device. You might be viewing this app in a desktop browser. If not, we suggest you Google "How to add a web page to home screen on [your device]".
If you stumble upon a manna that just doesn’t make sense, it could be a result of human error. A manna usually contains one or more verses put together in an order which makes sense and provides a message. If that's not the case with the manna you picked, feel free to have us check it out by tapping the button below. The manna you're currently viewing (or the last manna you picked) will be reported.


Difference between .string and .text BeautifulSoup
31 Mar 2015.string
on a Tag type object returns a NavigableString type object. On the other hand, .text
gets all the child strings and return concatenated using the given separator. Return type of .text
is unicode object.
From the documentation, A NavigableString is just like a Python Unicode string, except that it also supports some of the features described in Navigating the tree and Searching the tree.
From the documentation on .string
, we can see that, If the html is like this,
.string
on the four td
will return,
.text
will give result like this,


- the `Document Object Model` is the hierarchy/representation of the objects that comprise a document on the web (i.e. how all elements in a document are organized). The DOM is a part of the `Browser Object Model`, the hierarchy/representation of all browser objects associated with the web browser.
Browser Diagram User Interface v Browser Engine —>
Data Persistence v Rendering Engine v v v Networking JS interpreter UI
backend ====================================== -
User Interface
: everything in browser interface except
requested page content - Browser Engine
: manages interactions
btwen UI and rendering engine - Rendering Engine
: renders
requested page content, parsing HTML & CSS - Networking
:
handles network calls, i.e. HTTP requests - JS Interpreter
:
parses & executes JS code - UI Backend
: used for drawing
basic widgets, using operating system UI methods -
Data Persistence
: persistence of data stored in browser,
i.e. cookies
- A browser's main role in the request/response cycle is:
1. Parsing HTML, CSS, JS
2. Rendering that information to the user by constructing a DOM tree and rendering it.
Request-Response Diagram
Click ---> Request ---> Server <----> Data
Browser
Page <--- <--- Response
Your Computer The Internet Data Center
Window API - the Window API
includes the
methods and properties that you can use on the window object
,
the core of the BOM
. - using the Window API
to
resize the browser window:
```js
//opens a new window
newWindow = window.open("url", "name", "width=100, height=100")
//resizes new window
newWindow.resizeTo(500,500)
//also resizes by given amount; use `-` to shrink
newWindow.resizeBy(xDelta, yDelta)
```
context
of an anonymous function
fun in
the browser will be the window object
. Remember that every
function has a context, which we can think of as which object OWNS the
function, and context is most often determined by how a function is
invoked.
Running Scripts - Insert a script via a .js document into
an .html document:
html

- Run the script on DOMContentLoaded (when the doc has been loaded, but
without waiting for stylesheets, images, and subframes):
js window.addEventListener("DOMContentLoaded", event => {
console.log("This script loaded when the DOM was ready."); });
- Run the script on page load using window.onload (wait for EVERYTHING to
load):
js window.onload = () => { console.log( "This script loaded when all
the resources and the DOM were ready." ); };
- Three ways to prevent script from running until page loads: 1. Use
DOMContentLoaded
2. Place script tag
at very
bottom of HTML file 3. Add attribute like async
or
defer
async vs defer -


Nice to meet you! My name is Edmond, an aspiring Full-Stack Web Developer. On December 2018, I fell in love with the capabilities of web development after creating
my first few projects. I was hooked ever since, from constantly learning new things
everyday and applying it by building websites and applications for the real world is
an exhilarating experience.
Currently my primary goal is to build a strong front-end foundation with JavaScript
and React. Then further on as I build upon my experiences, I want to achieve
full-stack from learning more about back-end skills like NodeJS, Express, and
Python.
Other than web development, I have passions for cooking, health & fitness, gaming,
anime, learning about the latest tech, dabbling in mobile app & game development,
financial investments, traveling, and of course 🐶 doggos.
View Resume
E-commerce web application made with React, Redux, Stripe, Firebase, ContextAPI, and React Hooks. Consists of routes to different clothing categories, add/delete cart function, checkout with Stripe payment, sign-in/sign-out users, and a register user feature.
Full-Stack web application built using HTML5, CSS3, JavaScript, and React, for the front-end with the Clarifai API to detect faces from the user's image URL inputs which then calls to the back-end API created with Node.js, Express.js, and PostgreSQL database to record user entries and log user accounts.
Full-Stack web application built using VueJS and Express utilizing the Tracker Network API from tracker.gg to track and display player stats from their respective platforms.
Mock Apple Website design and code practice utilizing Bootstrap Studio as the framework for this project. Mock website was created with nav, grid, column, and image components for a responsive design.
Real Estate Application made with React. MVP functionality with sorted filters for the real-estate listing data, different view functionality for listings with grid system, and page pagination.
Functioning blog website developed with GatsbyJS and React for the UI and front-end. As part of GatsbyJS, GraphQL was used to fetch markdown files, blog posts, APIs, and plugins used for the blog website.
I'm currently available for new opportunities.
Fancy a conversation with tea 🍵 or coffee ☕?
Please feel free to connect with me and leave a message to my email or social links below. I will get back to you as soon as possible! 😊


Lucas Weeks’ E-Book Toolchain
Notes for the future
When you get down to the section on the process, you’ll see that I have a lot of work to do. I basically have decided that I want to use markdown as the starting point, and that’s it. There are many hurdles to overcome. Here are the next steps:
- My vision for ebook curation and production depends on volunteers, and it depends on volunteers who are getting feedback. This is why a documentation-style page for each book is necessary on a website. It allows 1) volunteers to get immediate feedback on a section they’ve worked on, and 2) it gives others the ability to read and give suggestions. So, now, I need to figure out how to go from markdown files to website.
- TO DO:
- Figure out the design of the website. For it to be working at a minimum, what features does it need?
- Where will the site be hosted?
- Figure out the best format for the Markdown file(s) to take. Single or multiple? Problematic kinds of tags? Consider all the outputs.
I think it’s best to focus on my needs initially, and then to add others in if I get anywhere.
I spent a great deal of time in the past 24 hours thinking carefully about the process of producing books that will be transformed into a variety of different formats. Here are my thoughts as of 8/30/2018:
I want to stick with Markdown. Why?
- It’s simple to understand and write, even for non-technical writers.
- It has widespread adoption.
- It has good support from Pandoc.
- A potential negative is that Markdown has 20+ varieties, and so we could run into strange incompatibilities. To mitigate this, I think we choose CommonMark and stick with it.
Someone might legitimately ask why we wouldn’t use Microsoft Word as a starting point for each book and use that file to create the different versions. Isn’t that a standard, too? Aren’t people very familiar with it? It’s a good question, and deserves a good response.
And my main response, leaving aside all my techie weirdness, is that the best way to clean up old books that have been OCR’ed is to work through them in a text editor. Microsoft Word, and other editors like it, are 1) set up for printed documents, primarily, and 2) encourage the user to add formatting, often without the user even knowing or understanding that they are doing it. So Markdown gives us a nice, clean a copy of the document that can easily be turned into other formats. Those, in turn, can then be modified as their medium requires.
The process:
- Edit and prepare books using CommonMark.
- Export books in the following formats:
Important Resources
- Pandoc
- CommonMark
- The folks over at Standard Ebooks are making high-quality ebooks, and it’s a great resource. We will need to develop our own typography manual, and we may want to borrow a lot from theirs.


Abcalc 2023 Remake (opens in a new tab)
#javascript
RxJS practice (opens in a new tab)
#javascript
Abcalc ES6 class (opens in a new tab)
#javascript
Fibonacci with Vanilla JS (opens in a new tab)
#javascript
Abcalc (opens in a new tab)
#javascript
Fibonacci (opens in a new tab)
#javascript


Increase or decrease capacity within minutes, not hours or days. Ideal for high performance.
Commitment of 99.99% availability. 7x fewer downtime than the next largest cloud provider.
The model has been recommended for running enterprise applications by Gartner.
Lockdown security model prohibits possibility of human error and tampering.
Simple and affordable price plans for your Virtual computing environments.
vCPU: 8
Memory: 64 GiB
Instance Storage: EBS Only
vCPU: 32
Memory: 256 GiB
Instance Storage: 2 x 600 NVMe SSD
vCPU: 64
Memory: 512 GiB
Instance Storage: 4 x 600 NVMe SSD


WITNESS LIST
Finance
January 28, 2019 10:00 AM
FOR:
Berry, Traci Sr. VP Goodwill Central TX (Goodwill Central Tx & Smart on Crime),
Lakeway
DeLuna-Castro, Eva Budget Analyst (Center for Public Policy Priorities)
Franklin, Allison Policy Fellow at Texas Criminal Justice Coalition (also providing written
testimony) (Texas Criminal Justic Coalition), Kyle, TX
Salazar, Richard Corrections Officer/ Food Service Mgr (AFSCME Local 3806 Texas
Organizing Council 7), Rusk, TX
ON:
Ascano, Nicole LBB Staff (also providing written testimony) (LBB)
Cain, Camille Executive Director (also providing written testimony) (Texas Juvenile
Justice Dept.)
Collier, Bryan Executive Director (also providing written testimony) (Texas Department of
Criminl Justice), Huntsville, TX
Corbell, Richard LBB Staff (also providing written testimony) (LBB)
Erschabek, Jennifer Ex Director (also providing written testimony) (Texas Inmate Families
Association)
Garrett, Ro'Vin Tax Assessor Collector Brazoria Co. (also providing written testimony)
(Tax Assessor Collectors Assn (TACA))
Gillian, David LBB Staff (also providing written testimony) (LBB)
Gutierrez, David Presiding Officer (also providing written testimony) (Board of Pardons &
Paroles), Austin
Hansch, Greg Public Policy Director (also providing written testimony) (National Alliance
on Mental Illness (NAMI) Texas), Austin, TX
Hasley, David Founder of Unify US (Self), Garland
Hearn, Skylor Deputy Director (also providing written testimony) (TX DPS), Austin, TX
Isaack, Angela LBB Staff (also providing written testimony) (LBB)
Jankovsky III, Richard L. Presidont of D.P.S.O.A. (also providing written testimony)
(DPSOA), Austin, TX
Kidd, Nim Chief Tx Div. of Emer Mgmt (also providing written testimony) (TDEM),
Austin, TX
Levin, Marc Public Policy Institute (also providing written testimony) (Texas Public
Policy Foundation and Texas smart on crime coalition), Austin, TX
Lilly, Chairman Kevin Commissioner - Chair (also providing written testimony) (Texas
Alcoholic Beverage Commission), Austin, TX
McCraw, Steven Director (also providing written testimony) (Texas Dept of Public
Safety), Austin, TX
McGeady, John LBB Staff (also providing written testimony) (LBB)
Miller, Shauna LBB Staff (also providing written testimony) (LBB)
Molina, Laurie LBB Staff (also providing written testimony) (LBB)
Nettles, Bentley Executive Director (also providing written testimony) (Texas Alcoholic
Beverage Commission), Austin, TX
Norris, Major General Tracy Adjutant General of Texas (also providing written testimony)
(Texas Military Department), Austin, TX
WITNESS LIST
Finance
January 28, 2019 10:00 AM
Oertel, Lauren Director of Organizational Strategies (also providing written testimony)
(Texas Inmate Families Association), ATX
Paul, Susannah LBB Staff (also providing written testimony) (LBB)
Posey, John LBB Staff (also providing written testimony) (LBB)
Robertsun, Jeffery (JD) Chief, Office of Independent Ombudsman (also providing written
testimony) (Self)
Rose, Lauren Director of Public Policy (Texas Network of Youth Services), Austin
Rutland, Tim Executive Director (also providing written testimony) (Texas Commission on
Fire Protection), Austin
Taylor, Shelia Interim executive Director (also providing written testimony) (Texas
military Department)
Vela, Kelsey LBB Staff (also providing written testimony) (LBB)
Vickers, Kim Executive Director (also providing written testimony) (Commission on Law
Enforcement), Austin
Williams, Ranada State Chief financial officer (also providing written testimony) (Texas
Military Department)
Wood, Brandon Exec Director (also providing written testimony) (Commission on Jail
Standards), Austin, TX
Registering, but not testifying:
FOR:
Barton, John Chair, Judges Legislative Committee JPCA (Justice of the Peace and
Constables Association of Texas), Midland, TX
Crier, Jack Executive Director (Texas State Troopers Association), Austin,, TX
Gutierrez, Bobby Chief Deputy (Justice of the Peace and Constables Association of Texas),
Austin, Tx, TX
Pantel, Jama Government Relations (Justices of the Peace and Constables Association of
Texas), Austin, TX
ON:
Anderson, Emily Texas Juvenile Justice Department (Texas Juvenile Justice Department)
Britt, Kyle Director of Budget (Board of Pardons and Paroles), Austin, TX
Hamilton, Billy Deputy Chancellor, Texas A&M System (Governor's Commission to
Rebuild Texas)
Mayo, Vanessa Cheif Financial Officer (Texas Alcoholic Beverage Commission), Austin,
TX
McDonnell, Timothy Chief of Staff (Texas Board of Pardons & Paroles), Austin
McGinty, Jerry Chief Financial Officer (Tx Dept of Criminal Justice), Huntsville, TX
Phillippe, Mark Brewery owner (Hi Sign Brewing), Austin, TX
Roth, Brian Finance Director - TCOLE (Texas Commission on Law Enforcement), Austin,
TX
Sanchez, Servando Financial Manager (Texas Commission on Fire Protection)
Whittenton, Suzy CFO, DPS (DPS), Austin, TX
Providing written testimony:
ON:
Fowler, Deborah Executive Director (Texas Appleseed), Austin, TX
WITNESS LIST
Finance
January 28, 2019 10:00 AM
Linder, Lindsey Senior policy attorney (Texas criminal justice coalition), Austin, TX
Switzer, Gyl Exec Dir (Texas Gun Sense), Austin, TX


This directive specifies an upper limit on the amount of unused
memory to hold onto. If the total size of all unused, pooled memory
exceeds this value, Squid begins returning unused memory to the
malloc library by calling free(
). If set to 0 (the default), Squid
doesn't place any limit on the amount of unused
memory to keep in the pools. |
Syntax
|
memory_pools_limit size-specification
| |
Default
|
memory_pools_limit 0
| |
Example
|
memory_pools_limit 100 MB
| |
Related
|
memory_pools
|
|


My Site Name
My Site Slogan
Links Heading
Blog Post Title
Published by Joe on 01 May 2011 @ 12:30 pm


Hello {{ user.name }}! Welcome to EnergyUse !
We hope you'll find the site useful and our community friendly.
We encourage you to participate: upvote posts that you like, create discussions, write comments and replies, follow posts, bookmark content. You can keep up with the latest content via email (see your user account settings) or RSS feeds.


|
Close Help |
Your favorite text editor. Blot converts files in your Dropbox folder into blog posts. This means you can write with your favorite text editor. Watch the demo.
Looks beautiful. Blot comes with two carefully designed themes and works hard behind the scenes to typeset your entries. See a blog using Blot.
Easy formatting using Markdown. Blot supports entries in plain text, Markdown or HTML. You can even embed your own scripts.
Fast and reliable. Blot hosts blogs with thousands of posts with ease. Your entries are cached on Blot's servers. Downtime is rare and brief.
Sign up for Blot and set up your blog instantly.
$20 a yearNo, Blot only has access to the folder containing your blog posts.
No, Blot fetches a copy of each blog post and hosts it on Blot's servers.
See more on the help page. Don't hesitate to contact me with any questions.


What is this?
This is a network version of Minefield Mahjong, a game described in
the manga Kaiji by
Nobuyuki Fukumoto.
How do I play?
Minefield Mahjong is a two-player game in which the players try to get each other to deal into their hand.
Assuming you already know the rules of Riichi Mahjong (if not, you should look at some other sources, like
Wikipedia or The Mahjong Guide):
- The players shuffle the tiles and arrange them into four walls, as usual.
-
In the first phase, each player receives the 34 tiles from the wall closest to them.
- Within the next 3 minutes, they have to
create a waiting hand (13 tiles) worth at least a mangan.
- The score always includes riichi as well as dora
(determined at the beginning by flipping one of the tiles from the remaining walls).
- In the second phase, the players deal remaining tiles
one by one, 17 times.
- You win if the other player deals into your hand.
How are the hands scored?
There is a number of subtleties in scoring Minefield hands:
-
We use mangan rounding-up. This means that 4 fan
30 fu hand (for instance, riichi dora tanyao pinfu) as well as 3
fan 60 fu hand are mangan.
-
Riichi is always included. There is also ippatsu (win
on the first dealing) and houtei (win on the last one).
-
Apart from dora, there is also uradora,
revealed after the win. However, your hand has to be a mangan even
without uradora.
-
Watch out for furiten! Unfortunately, it applies
even if either you or your opponent deals one of your cheaper (that
is, non-mangan) waits.
- There's no round wind, only your seat wind.
- There is no kan.
Is my browser supported?
Minefield supports recent versions of Chrome and Firefox. This is a hobby project
and we like to play with all the shiny new features :)
However, if this is a problem for you, don't hesitate to contact us - we might be able to help.
What technology do you use?
For the user interface, we use React and
Redux.
The server is written in Rust. We use WebSockets for communication.
How do I contact you?
We welcome all kinds of questions, wishes, suggestions, bug reports, corrections to this FAQ and other feedback!
Simply write an e-mail to pwmarcz at gmail dot com.
日本語でメッセージも大歓迎！
日本語翻訳で手伝う人を探しています。


"The Special One' becomes 'The Special Four"
by BeSoccer"I'm not one more, I'm the special one". The phrase is unmistakeable. It was said 15 years ago, on the 2nd July 2004, when Jose Mourinho came to Stamford Bridge.
"Seriously, I don't want to be taken arrogantly," said the man who returns to England for the fourth time. It is Tottenham Hotspur who welcome one of football's strongest personalities, the man who upset both his own fans and others and that, to many people's disappointment, has tamed with the passing of time.
Because Mou is not what he used to be, atleast in terms of the media. His 'showtime' in press conferences stayed in Madrid and his fiery character has been extinguished. There are no longer the "why," references to Unicef and lists of errors.
Maybe that's why he has got another chance in England. He has been sacked from his last three teams, Real Madrid, Chelsea and Manchester United, with the last dismissal being the worst.
But Mourinho already warned years ago, when he his case was compared to that of Manuel Pellegrini's. "What happened to him won't happen to me. When I get out of here, I'll go to a great team in England or Italy."
Featured links
- BREAKING NEWS: Mourinho replaces Pochettino at Tottenham
- The latest football transfers news and rumours
- Wales, golf, Madrid... in that order
- Luis Enrique returns to Spain national team
And time has proved him right. The latest big team to knock on his door is Tottenham, a team very much with his winning style from earlier years. A big club, but not winner, atleast not yet.
As was Porto or Inter before his arrival, clubs he transformed with titles previously unimaginable.
But his Champions League counter has been standing at two ever since. Since 2010, the top continental competition has been elusive to him and now he has arrived at a club that has recently reached the final.
The new stage in London will test his ability to retrain. Manchester United's Mourinho is no longer good, no matter how low the bar is set at White Hart Lane for titles.
He has to overcome the great work of Mauricio Pochettino in the last five years and will have to do it against the clock, because in London they are tired of waiting.


BULWORTH
A Film Review by James Berardinelli
RATING: ***1/2 OUT OF ****
United States, 1998 U.S. Release Date: 5/15/98 (wide) Running Length: 1:48 MPAA Classification: R (Profanity) Theatrical Aspect Ratio: 1.85:1
Cast: Warren Beatty, Halle Berry, Oliver Platt, Don Cheadle, Paul Sorvino, Jack Warden Director: Warren Beatty Producers: Warren Beatty, Lauren Shuler-Donner, Pieter Jan Brugge Screenplay: Warren Beatty, Jeremy Pikser Cinematography: Vittorio Storaro Music: Ennio Morricone U.S. Distributor: Twentieth Century Fox
I'd like to say that BULWORTH is the best political satire in years, but the truth is that is has tough competition from Barry Levinson's corrosive WAG THE DOG in that department. Both films succeed admirably, but, although each takes aim at the sorry state of current- day politics, they have slightly different agendas and approaches. WAG THE DOG dissects the showmanship aspect of Washington, while simultaneously firing a few shots at Hollywood. BULWORTH, on the other hand, is a full-frontal assault on the shallowness of the political campaign process. It has the audacity that PRIMARY COLORS should have displayed, but was afraid to. BULWORTH is willing to openly offend to get its point across. That's something that PRIMARY COLORS was nervous about doing.
In one sense, the film, put out by Warren Beatty with little concern for whose toes might get stepped on, can be summed up as an attack on the growing conservatism of the Democratic party, which is becoming increasingly more difficult to distinguish from its Republican rival. BULWORTH is unrepentantly cynical in its view that all politicians are in the back pockets of big business and that every elected official, whether Democrat or Republican, is a member of an exclusive club. Hypocrisy, self-interest, and greed are the three forces that drive every campaign, and Senator Jay Billington Bulworth (Beatty) has had enough.
It's mid-March 1996, and Bulworth, an incumbent Senator from California, is running for re-election. However, like the Michael Douglas character in FALLING DOWN, he has reached the breaking point. After taking out a $10 million life insurance policy with his 17-year old daughter as the sole beneficiary, he puts out a contract on his own life, then goes on the warpath against special interest groups. Discarding a prepared speech about the country standing "on the doorstep of a new millennium," he tells an African-American audience that the government doesn't care about them because they don't contribute enough money to re-election campaigns. Later, at a black tie dinner attended by Hollywood types, he launches into a tirade about the poor quality of movies.  They always put the big Jews on my schedule." Suddenly, Bulworth's "tell it like it is" philosophy is a national sensation, attracting the attention of millions, including a young black woman named Nina (Halle Berry), who is determined to show the Senator what life is like for those who live in South Central L.A. Right in the middle of everything, Bulworth suddenly decides that he wants to live, but learns that calling off a hit isn't as easy as setting one up.
BULWORTH's only real weakness (and it's more in the nature of a minor inconvenience than a significant flaw) is the backstory, which, with its disguised hit men, car chases, and bungled assassination attempts, takes up a little too much time. The political satire, on the other hand, is brilliant. Not only is it honed to a viciously sharp edge, but it's frequently hilarious. Beatty manages to lampoon controversial issues, like kids selling drugs for dealers because they're too young to go to prison, while simultaneously making serious points. In addition to the political material, there are other targets, including the easy marks of tabloid reporters and TV news programs. There's also a funny bit involving George Hamilton.
Beatty has assembled a solid, diverse cast. As the title figure, the co-writer/director sets himself up as a sitting duck. Beatty is tremendous in this role, even going so far as to poke fun at how his increasing age has affected his legendary sex appeal. He takes Bulworth from business suits to sweatpants and sunglasses, and transforms his campaign speeches into angry rap songs, all without missing a beat. Bulworth may not always be a three-dimensional character, but he's consistently fun and completely unpredictable. The supporting players include Oliver Platt as Bulworth's campaign manager, Paul Sorvino as the head of an insurance corporation that wants Bulworth to stall a bill in committee, Don Cheadle as a drug dealer, and black playwright Amiri Baraka as a mysterious homeless man.
BULWORTH is an angry movie, but Beatty is savvy enough to recognize that people respond better to comedies than serious "issue films," so he has camouflaged his message beneath the surface of this original, incisive satire. Like WAG THE DOG and PRIMARY COLORS, BULWORTH may not have widespread mainstream appeal, but anyone with an interest in American politics should see this movie, not only because it promises to tickle the funny bone, but because so many of its shots hit the bulls- eye. It's worth noting that BULWORTH occasionally reminded me of NETWORK, Sidney Lumet's 1976 shredding of the TV news industry, both in terms of plot points and spirit. Each movie has a take-no-prisoners attitude, and in today's climate of suffocating political correctness, that's a welcome trait.
Copyright 1998 James Berardinelli
- James Berardinelli e-mail<EMAIL_ADDRESS>Now with more than 1400 reviews... The ReelViews web site: http://movie-reviews.colossus.net/
"My belief is that no movie, nothing in life, leaves people neutral.
-- David Puttnam
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


BIT TURNER
Add .docx file
Drag and drop a file or select one
Remove
Uploaded .docx file
Send
Uploaded Image
Add .xlsx file
Drag and drop a file or select one
Remove
Uploaded .xlsx file
Send
Uploaded Image