| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is somewhat different from what we usually offer, so please
do send your feedback.
Help Support Daily Rotten
To this end, you may wish to visit the
Rotten Store. Thanks for helping to keep the lights on.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Stuff
Rotten
Rotten Library
Pornopolis
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Shockumentary
Rate My Poo
Rate My Kitten
Rate My Bunny
Rate My Puppy
Rate My Finger
Rate My Boobies
Penny Postcards
Phallic
Dr. Sputnik
Boners
Dead Pool
Leisure Town
Jerkcity
Daily Howler
NNDB
Home
Make Dailyrotten your start page
|
|
|
June 21, 2005
Trooper orders couple to strip
Chicago Sun-Times | Submitted by: CarlitosWay
"When the man in the uniform told them to strip to their underwear, the young couple thought they'd surely encountered someone impersonating a cop. But the man involved in a traffic stop near Northbrook was in fact Illinois State Trooper Jeremy Dozier, Cook County prosecutors allege."
|
|
Read article...
|
|
Glory Hole stops serving bear meat
Juneau Empire | Submitted by: ophidicism
"For years, the Glory Hole accepted bears to supplement its meals for the homeless. Bear burgers, bear casseroles, bear spaghetti - the shelter's cooks had a wide menu of options for the game meat. But last year, Jetta Whittaker, executive director of the Glory Hole, learned from the senior center in Nome that the Alaska Department of Environmental Conservation prohibits nonprofits from accepting such wild game meats as foxes, bears and walruses." ... "We didn't know that it is illegal," Whittaker said. This year, the Glory Hole has turned down offers of five bears. [Uh...]
|
|
Read article... and
This article...
|
|
Saddam chatty behind bars
San Francisco Chronicle | Submitted by: Your Mama
"Saddam Hussein loves Doritos, hates Froot Loops, admires President Reagan, thinks Clinton was "OK" and considers both Presidents Bush no good. He talks a lot, worries about germs and insists he is still president of Iraq. Those and other details of the deposed Iraqi leader's life in U.S. military custody appear in the July issue of GQ magazine, based on interviews with five Pennsylvania National Guardsmen who went to Iraq in 2003 and were assigned to Saddam's guard detail for nearly 10 months."
|
|
Read article...
|
|
Bush: War is Hell
Reuters | Submitted by: One bad rabbit
"President Bush acknowledged on Monday the Iraq war was tough going but refused to back down from assertions that progress was being made despite Republican complaints about the administration's rosy optimism." ... Asked if he agreed with Vice President Dick Cheney's assertion that the insurgency was in its "last throes," Bush replied that he understood how dangerous it is there, adding: "I think about Iraq every day, every single day."
|
|
Read article...
|
|
FBI trolls library for terrorists
Guardian | Submitted by: who wants ice cream
"The bookish calm of a public library might not seem like the most obvious place to hunt for terrorists, but according to a report, the FBI and other US law enforcement agencies involved in counter-terrorism have made more than 200 requests for information about borrowers from libraries since September 11. A list of people who had borrowed a book about Osama bin Laden was among the information to have been demanded since the introduction of the patriot act, the legislation that has enhanced the government's powers to investigate alleged terrorist activity after the attacks on the World Trade Centre and the Pentagon."
|
|
Read article...
|
|
Goddamn broadcast flag back again
Engadget | Submitted by: not a gay
"Okay, listen up — the MPAA may have tried to fake us out, but it looks like we haven’t yet heard the last of the Broadcast Flag. Word on the street is that the Broadcast Flag bill may be snuck into a Senate Appropriations Committee spending bill that will be up for consideration as early as tomorrow. Looks like they’re taking pointers from the Real ID Act, which also made it through Congress on the coattails of a spending bill — sneaky, sneaky!
|
|
Read article... and
This... and
This...
|
|
Pedophile cop goes down
San Francisco Chronicle | Submitted by: discobiskit
"After a San Jose police officer pleaded guilty this morning to allegations that he molested his 11-month-old daughter, attorneys in the case described for the first time the videotaped evidence of the incident that led to his arrest last week." ...   ... "There really was no defense in this case because there was videotape evidence," Gibbons-Shapiro said. "Our only hope is that as the child grows up, this event doesn't make it hard for her in any way." ... "Defense attorney Dan Jensen maintains that [the cop] had no criminal intent and that the video is somewhat ambiguous."
|
|
Read article...
|
|
O Canada! Pot-based painkiller now available
CNN | Submitted by: The_one_and_only_Clinton, ESQ.
"A cannabis-based painkiller for multiple sclerosis patients went on sale Monday in Canada, the first country to approve the spray derived from the marijuana plant. Sativex can now be obtained by prescription through Canadian pharmacies, Bayer HealthCare announced Monday. Bayer markets the drug in Canada for British drug company GW Pharmaceuticals, which developed the drug. Health Canada, the federal agency that oversees medical care for Canadians, announced in April it had approved Sativex, made from components derived from the cannabis plant that have been shown to ease pain. Medical professionals [and stoners] welcomed the availability."
|
|
Read article...
|
|
Cops dust dude with grenade in courthouse
KOMO-TV 4 Seattle | Submitted by: Gorg
"A man carrying a hand grenade and a sheaf of papers including a "living will" was fatally shot by police Monday in the lobby of the downtown Federal Courthouse, authorities said. The grenade was a dud, but police could not see that as the man held it in his hand."
|
|
Read article...
|
|
TSA flat out lies to public
Wired | Submitted by: BARBELITH
"The federal agency in charge of aviation security collected extensive personal information about airline passengers even though Congress forbade it and officials said they wouldn't do it, according to documents obtained Monday by The Associated Press. The Transportation Security Administration bought and is storing details about U.S. citizens who flew on commercial airlines in June 2004 as part of a test of a terrorist screening program called Secure Flight, the documents indicate."
|
|
Read article...
|
|
Help save our children from the hippity hop!
Seattle Times | Submitted by: Biju 'Frank and Bean'
"The way Rong Soung sometimes dresses might make some adults cringe: His pants are too droopy, his shirts too big, the gold chains thick around his neck. The 18-year-old Cambodian-American senior at Highline High School in Burien says his choice of clothes and preference for rap music are part of the hip-hop culture he embraces — his way of expressing himself. School officials, though, see something else: gang trouble."
|
|
Read article...
|
|
Bahraini protesters face beat-down
BBC | Submitted by: Isaac bin Sultan
"About 50 people in Bahrain have been beaten and arrested by police in the capital, Manama, a human rights activist and other witnesses say. Nabil Rajab said police acted to disperse demonstrators who protested outside the king's royal court against the lack of jobs in the Gulf kingdom. He said among those beaten was Abdulhadi al-Khawaja, the head of the banned Bahrain Centre for Human Rights."
 ... "The 15-year-old, who had loaded his shotgun, then shot his father as he was bending over his wife and raising his gun again, the authorities said. The boy, who ran to a neighbor's house in tears, won't be charged, [police] said."
|
|
Read article...
|
|
Wal-Mart fires partially paralyzed dwarf for not smiling
St. Petersburg Times | Submitted by: Victor Karnac
"Molly Beavers lost her smile early on in her 19-year career of pushing food samples and collecting grocery carts she could barely see over. Her scowl may have cost her the job. A Sam's Club manager fired her in December 2003 for not smiling enough, she says. Beavers' face is partially paralyzed from surgery related to her condition as an achondroplastic dwarf."
|
|
Read article...
|
|
Apparently life on the outside sucks
WSB-TV 2 Atlanta | Submitted by: CarlitosWay
"Freedom isn't all that great. At least to one escaped monkey. Takala, a golden-bellied mangabey, got out of the new monkey exhibit at the San Diego Zoo Friday. But he was found less than an hour later, waiting to get back inside."
|
|
Read article...
|
|
Technological marvel _and_ instrument of death
San Francisco Chronicle | Submitted by: Space Jew
In his memoir of Vietnam, former war correspondent Jacques Leslie recalls visiting an American aircraft carrier in the South China Sea, when suddenly "I was engulfed in technology, released to a vast metallic universe where nothing grew, where doubt had no place." The young reporter for the Los Angeles Times found that "the press officers who took turns accompanying me could tell me all about the astonishing mechanics of jet takeoffs and landings, of how the pilots got graded on their bombing accuracy, but they couldn't say if the pilots thought of people below as they dropped their bombs or ever felt regret. Most of the pilots couldn't tell me either, preferring to dwell on the marvels of their flying machines."
|
|
Read article...
|
|
Makes Grand Theft Auto look like Romper Room
New York Daily News | Submitted by: uucp
"You may have thought Grand Theft Auto was the last word in video game violence. Think again. The latest in shoot-'em-up video game technology, 25 to Life, allows players to attack police with an arsenal of Molotov cocktails, broken bottles and baseball bats. When weapons fail, players make strategic moves using civilians as human shields. The game even lets players choose gang colors and create personalized graffiti tags. "It's the worst in a series of violent and gruesome games that lower the common denominator of decency," said Sen. Chuck Schumer (D-N.Y.), who is trying to block the game from hitting stores in September."
|
|
Read article...
|
|
Faked orgasms don't fool the machine
New Scientist | Submitted by: c_o__c____k________s
"Women may be able to fool their partners by faking an orgasm but a brain scanner will catch them every time, a conference heard on Monday. Researchers at the University of Groningen in the Netherlands have used scans to show that different areas of the brain are stimulated during an orgasm but are not activated when a woman fakes it." ... "Women can imitate orgasm quite well," Gert Holstege told a fertility meeting on Monday. "But there is nothing really happening in the brain."
|
|
Read article... and
This article...
|
|
|
|
|


JOHN F. FALZONE
Full Stack Web and Hybrid Mobile Applications Developer
- IT professional with wide-ranging, progressive experience in full stack web and mobile development, project management, systems and network administration, integrated enterprise network design, policy creation and implementation, asset security and virtualization.
- A strategic and logical problem solver, who enjoys analyzing and evaluating situations, projects and options to providing practical, cost-conscious solutions.
- A gregarious contributor that is changing the mold of “IT guy”, applying vigor and vitality when collaborating with vendors, clients, team members and the C-suite.
- Polymath who is open, engaging, and enthusiastic about transformational projects, has exceptional written and verbal communication skills and adapts to prioritize tasks and execute projects with minimal direction.
EDUCATION
MICROTRAIN TECHNOLOGIES - Chicago, Illinois
Agile Full Stack Web and Hybrid Mobile Developer Boot Camp
Gained front-end and client-side development skills using HTML, CSS and JavaScript.
Implemented jQuery, Bootstrap and Angular libraries and frameworks.
Leveraged Gulp and Git to build web applications.
Applied web technologies to build hybrid mobile applications with Apache’s Cordova.
Manipulated third party APIs from vendors such as Google, NASA and LinkedIn to host dynamic web content.
Developed server-side integration using the LAMP (Linux, Apache, MySQL, PHP) and
MEAN (MongoDB, Express, Angular, Node.js) stacks.
Maintaining and configured a personal cloud (AWS) server.
CORNELL UNIVERSITY - Ithaca, New York
B.S., City and Regional Planning/Urban and Regional Studies
CERTIFICATION/TECHNICAL SKILLS
| Certifications: | Agile Certified Scrum Master, CompTIA A+ |
|---|---|
| Platforms: | Linux, Windows, Mac, LAMP, MEAN, Node.js, Hyper V, AWS |
| Database: | MySQL, MongoDB |
| Tools: | Visual Studio Code, SSH, Gulp, Git, Adobe Photoshop |
| Languages: | HTML, CSS, SASS, JavaScript(ES6), PHP, Bash, SQL |
PROFESSIONAL EXPERIENCE
ROC Group - Chicago, Illinois
IT Manager 2013-2018
Managed the IT Department’s operational and strategic goals by planning projects, coordinating with executives and negotiating the allocation of resources. Analyzed, recommended, implemented and configured tools and solutions for the company's technology needs and goals. Improved the IT infrastructure by creating policies and procedures, modifying network and logical layouts and developing asset databases. Trained new employees on ROC technology, applications and policies during onboarding.
- Expanded the network infrastructures through the upgrade and installation of three office branches. Identified network and system requirements, evaluated service providers, managed project timelines and installed, configured and tested equipment.
- Initiated ROCKET (ROC Knowledge and Education for Technology) an internal IT support site hosting training materials, guides and policies that increased end user computer literacy and self-sufficiency.
- Introduced Office 365 as a cost saving and data protection measure, coordinating the Active Directory and Exchange Server migration.
- Designed a SharePoint database to improve technology asset tracking, identify all vendors and service contracts, and monitor software licensing to comply with data protection and security policies.
- Optimized conference bridges to run on in-house PBX, saving $18,000 annually.
IT Coordinator 2013
Managed the deployment, monitoring, maintenance and support of all IT systems, including servers, PCs, operating systems, hardware, software, Data and Telecommunications, wireless networks, PBX, desk phones, key card access, A/V and peripherals. Monitored vendor, outsourcer and consultant adherence to contracts and service agreements. Independently resolved desktop technical support issues.
- Streamlined the company-wide transition from Dell to Lenovo laptops by researching end user needs, identifying system and hardware requirements, developing end user training and project timelines, and monitoring adoption and technical issues.
- Produced Visio and Excel documents mapping network resources and configurations.
- Introduced annual audit of computing assets and user system configurations to track inventory and licensing.
- Contributed to the IT Department’s budget creation and review.
COMCAST - Chicago, Illinois
Network Tech 1 XOC 2012-2013
Provided 7-days-a-week, 24-hours-a-day, 365-days-a-year escalation support for the XOC HFC Desk, Regional Engineering, Headends and other work partners across the division. Facilitated training of entry and mid-level technicians to better understand Telnet and Interface commands for network equipment.
- Overhauled the internal Wiki site to organize training material to help co-workers troubleshoot issues quickly.
- Awarded a permanent position after working a temporary role for two months.
- Achieved successful completion and closing of all assigned tickets within projected time windows.
HURON CONSULTING GROUP - Chicago, Illinois
IT Support Technician 2012
Delivered help desk ticket support through telephone, walk-up desk, email and Lync 2010. Addressed user Lenovo and MAC hardware and software issues, BlackBerry and iPhone upgrades and connectivity, Cisco IP Phone connections and virus/malware removal. Ensured user data protection policy compliance to meet HIPAA, SOX and ISO requirements. Cross-departmental collaboration with server administrators.
- Proactively maintained individual project goals while contributing to other team members’ tickets.
- Generated 12-15 successfully completed ticket closures daily.
- Increased the number of users meeting data protection compliance by 85%.
LEARN CHARTER SCHOOL NETWORK - Chicago, Illinois
Hardware and Software Technician 2011-2012
Resolved support tickets and troubleshooted Dell hardware and software issues, printer and network device connectivity and internet access issues for over 300 end users. Created, developed, imaged and deployed over 700 netbooks to support standardized MAP testing across five campuses.
- Introduced an eFax usage guide for the Central Management Office, Finance and Human Resources departments.
- Delivered project timeline for enterprise-wide migration to customer relationship management software.
UNIVERSITY OF ILLINOIS AT CHICAGO, URBAN HEALTH PROGRAM - Chicago, Illinois
Assistant Director 2010
Established recruitment and retention programs for underrepresented and underserved minority students by representing the College of Pharmacy directly to K-12 schools, community organizations, college fairs and other recruiting events. Counseled and advised prospective students on meeting admission requirements. Developed and sustained collaborative relationships with school counselors and faculty.
- Created, maintained, and analyzed student recruitment database with profiles to assist with follow-up, surveillance and tracking.
- Designed and coordinated summer academic and social enrichment pharmacy program for 25 underrepresented and underserved high school students.
- Advised and oversaw the Undergraduate Pre-Pharmacy Club.


# Copyright 2019 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""Modules encapsulate building stateful components."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import re
from tensorflow.python.framework import ops
from tensorflow.python.ops import variables
from tensorflow.python.training.tracking import tracking
from tensorflow.python.util import nest
from tensorflow.python.util import tf_decorator
from tensorflow.python.util.tf_export import tf_export
@tf_export("Module")
class Module(tracking.AutoTrackable):
"""Base neural network module class.
A module is a named container for `tf.Variable`s, other `tf.Module`s and
functions which apply to user input. For example a dense layer in a neural
network might be implemented as a `tf.Module`:
```python
class Dense(tf.Module):
def __init__(self, in_features, output_features, name=None):
super(Dense, self).__init__(name=name)
self.w = tf.Variable(
tf.random.normal([input_features, output_features]), name='w')
self.b = tf.Variable(tf.zeros([output_features]), name='b')
def __call__(self, x):
y = tf.matmul(x, self.w) + self.b
return tf.nn.relu(y)
```
You can use the Dense layer as you would expect:
```python
d = Dense(input_features=64, output_features=10)
d(tf.ones([100, 64]))
#==> <tf.Tensor: ...>
```
By subclassing `tf.Module` instead of `object` any `tf.Variable` or
`tf.Module` instances assigned to object properties can be collected using
the `variables`, `trainable_variables` or `submodules` property:
```python
d.variables
#==> (<tf.Variable 'b:0' ...>, <tf.Variable 'w:0' ...>)
```
Subclasses of `tf.Module` can also take advantage of the `_flatten` method
which can be used to implement tracking of any other types.
All `tf.Module` classes have an associated `tf.name_scope` which can be used
to group operations in TensorBoard and create hierarchies for variable names
which can help with debugging. We suggest using the name scope when creating
nested submodules/parameters or for forward methods whose graph you might want
to inspect in TensorBoard. You can enter the name scope explicitly using
`with self.name_scope:` or you can annotate methods (apart from `__init__`)
with<EMAIL_ADDRESS>```python
class MLP(tf.Module):
def __init__(self, input_size, sizes, name=None):
super(MLP, self).__init__(name=name)
self.layers = []
with self.name_scope:
for size in sizes:
self.layers.append(Dense(input_size=input_size, output_size=size))
input_size = size
@tf.Module.with_name_scope
def __call__(self, x):
for layer in self.layers:
x = layer(x)
return x
```
"""
# AutoTrackable adds object attributes that users will not expect us to
# include when flattening (these reference dependencies reachable via other
# object attributes).
_TF_MODULE_IGNORED_PROPERTIES = frozenset((
"_self_unconditional_checkpoint_dependencies",
"_self_unconditional_dependency_names"
))
def __init__(self, name=None):
if name is None:
name = camel_to_snake(type(self).__name__)
else:
if not valid_identifier(name):
raise ValueError(
"%r is not a valid module name. Module names must be valid Python "
"identifiers (e.g. a valid class name)." % name)
self._name = name
with ops.name_scope(name) as scope_name:
self._scope_name = scope_name
@property
def name(self):
"""Returns the name of this module as passed or determined in the ctor.
NOTE: This is not the same as the `self.name_scope.name` which includes
parent module names.
"""
return self._name
@property
def name_scope(self):
"""Returns a `tf.name_scope` instance for this class."""
# TODO(tomhennigan) Memoize once name scopes are re-entrant.
return ops.name_scope(self._scope_name)
@property
def variables(self):
"""Sequence of variables owned by this module and it's submodules.
Note: this method uses reflection to find variables on the current instance
and submodules. For performance reasons you may wish to cache the result
of calling this method if you don't expect the return value to change.
Returns:
A sequence of variables for the current module (sorted by attribute
name) followed by variables from all submodules recursively (breadth
first).
"""
return tuple(self._flatten(predicate=_is_variable))
@property
def trainable_variables(self):
"""Sequence of variables owned by this module and it's submodules.
Note: this method uses reflection to find variables on the current instance
and submodules. For performance reasons you may wish to cache the result
of calling this method if you don't expect the return value to change.
Returns:
A sequence of variables for the current module (sorted by attribute
name) followed by variables from all submodules recursively (breadth
first).
"""
return tuple(self._flatten(predicate=_is_trainable_variable))
@property
def submodules(self):
"""Sequence of all sub-modules.
Submodules are modules which are properties of this module, or found as
properties of modules which are properties of this module (and so on).
```
a = tf.Module()
b = tf.Module()
c = tf.Module()
a.b = b
b.c = c
assert list(a.submodules) == [b, c]
assert list(b.submodules) == [c]
assert list(c.submodules) == []
```
Returns:
A sequence of all submodules.
"""
return tuple(self._flatten(predicate=_is_module))
def _flatten(self,
recursive=True,
predicate=None,
attribute_traversal_key=None,
with_path=False):
"""Flattened attribute values in sorted order by attribute name.
Modules are flattened by first walking their attributes in name order.
Each attribute value is then flattened to find leaf values. If flatten is
to be applied `recursive`ly then if the leaf is a `Module` it will also be
flattened to find leaves. Finally every leaf value is optionally tested
against the given `predicate` and finally yielded.
```
class Foo(tf.Module):
def __init__(self):
super(Foo, self).__init__()
self.x = [tf.constant('a'), tf.constant('b')]
self.y = {'i': tf.constant('c'), 'j': tf.constant('d')}
self.z = tf.constant('e')
@property
def tensors(self):
return tuple(self._flatten(predicate=is_tensor, with_path=True))
foo = Foo()
foo.tensors
# ==> ((('x', 0), <tf.Tensor: ...'a'>),
# (('x', 1), <tf.Tensor: ...'b'>),
# (('y', 'i'), <tf.Tensor: ...'c'>),
# (('y', 'j'), <tf.Tensor: ...'d'>),
# (('z',), <tf.Tensor: ...'e'>))
```
`attribute_traversal_key` controls the order object properties are visited.
If not set objects are visited in ascending order by name.
Args:
recursive: Whether to recurse into child modules or not.
predicate: (Optional) If set then only values matching predicate are
yielded. A value of `None` (the default) means no items will be
filtered.
attribute_traversal_key: (Optional) Method to rekey object attributes
before they are sorted. Contract is the same as `key` argument to
builtin `sorted` and only applies to object properties.
with_path: (Optional) Whether to include the path to the object as well
as the object itself. If `with_path` is `True` then leaves will not be
de-duplicated (e.g. if the same leaf instance is reachable via multiple
modules then it will be yielded multiple times with different paths).
Returns:
Flat generator for leaves of the current module and optionally all
submodules.
"""
if predicate is None:
predicate = lambda _: True
return _flatten_module(
self,
recursive=recursive,
predicate=predicate,
attributes_to_ignore=self._TF_MODULE_IGNORED_PROPERTIES,
attribute_traversal_key=attribute_traversal_key,
with_path=with_path)
@classmethod
def with_name_scope(cls, method):
"""Decorator to automatically enter the module name scope.
```
class MyModule(tf.Module):
@tf.Module.with_name_scope
def __call__(self, x):
if not hasattr(self, 'w'):
self.w = tf.Variable(tf.random.normal([x.shape[1], 64]))
return tf.matmul(x, self.w)
```
Using the above module would produce `tf.Variable`s and `tf.Tensor`s whose
names included the module name:
```
mod = MyModule()
mod(tf.ones([8, 32]))
# ==> <tf.Tensor: ...>
mod.w
# ==> <tf.Variable ...'my_module/w:0'>
```
Args:
method: The method to wrap.
Returns:
The original method wrapped such that it enters the module's name scope.
"""
def method_with_name_scope(self, *args, **kwargs):
with self.name_scope:
return method(self, *args, **kwargs)
return tf_decorator.make_decorator(method, method_with_name_scope)
def _is_variable(obj):
return isinstance(obj, variables.Variable)
def _is_trainable_variable(obj):
return _is_variable(obj) and getattr(obj, "trainable", False)
def _is_module(obj):
return isinstance(obj, Module)
_CAMEL_TO_SNAKE_R = re.compile(r"((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))")
_VALID_IDENTIFIER = re.compile(r"^[a-zA-Z_]([a-zA-Z0-9_])*$")
def valid_identifier(name):
return bool(_VALID_IDENTIFIER.match(name))
def camel_to_snake(value):
return _CAMEL_TO_SNAKE_R.sub(r"_\1", value).lower()
def _flatten_module(module,
recursive,
predicate,
attribute_traversal_key,
attributes_to_ignore,
with_path,
module_path=(),
seen=None):
"""Implementation of `flatten`."""
if seen is None:
seen = set([id(module)])
module_dict = vars(module)
submodules = []
for key in sorted(module_dict, key=attribute_traversal_key):
if key in attributes_to_ignore:
continue
for leaf_path, leaf in nest.flatten_with_tuple_paths(module_dict[key]):
leaf_path = (key,) + leaf_path
# TODO(tomhennigan) Handle cycles for `with_path=True` (e.g. `a.a = a`).
if not with_path:
leaf_id = id(leaf)
if leaf_id in seen:
continue
seen.add(leaf_id)
if predicate(leaf):
if with_path:
yield module_path + leaf_path, leaf
else:
yield leaf
if recursive and _is_module(leaf):
# Walk direct properties first then recurse.
submodules.append((module_path + leaf_path, leaf))
for submodule_path, submodule in submodules:
subvalues = _flatten_module(
submodule,
recursive=recursive,
predicate=predicate,
attribute_traversal_key=attribute_traversal_key,
attributes_to_ignore=submodule._TF_MODULE_IGNORED_PROPERTIES,
with_path=with_path,
module_path=submodule_path,
seen=seen)
for subvalue in subvalues:
# Predicate is already tested for these values.
yield subvalue


History
I'm totally new to Javascript, so I did some research to figure out what it's all about.
Javascript began at Netscape in the early 1990's as a way to add interactivity to web pages. Since then it's grown to become a prevalent force on the internet.
It's fast
One reason for Javascript's success is its ability to add dynamic content and interactivity to a website without requiring access to a server. Before Javascript the kind of functionality that it delivers required constant communication back and forth between the browser and server. Javascript allows for much of this work to be handled considerably faster without the need to wait for sending and receiving messages.
Javascript also allows you to add your code to a page and without having to compile or load a virtual machine you can see your changes right away. This greatly speeds up the process of testing code for developers and makes development and updates much easier.
It's powerful
Another reason Javascript has become so popular is because it's an object-oriented language. Having been based on Java and (to a lesser extent) C++, this makes Javascript an ideal way to interact with objects on your website. The way it interacts with the DOM and HTML also gives it the ability to manipulate web pages on a deep level.
It's supported
Because Javascript has been around for awhile and steadily grown in its use, most if not all modern browsers have great support for it, meaning you can expect the same functionality across all your users' experiences. This element is crucial to Javascript's success, and the more that it grows in use the more support will continue to stick around.


The primary aim of ShareCropper is to connect farmers within their locality for the efficient use of their resources. Smallholder farmers buy inputs such as seeds,fertilizers at high retail prices, often missing potential gains that come when dealing in bulk. Around 67 percent of India's farmland is held by the marginal farmers with holdings below one hectare.
Get Started!A network of farmers from the same locality, interacting to produce better resutts in yield
The shared use of resources like fertilizers, seeds,etc.
The efficient use of machineries by small farm holders exchanging among themselves or from other farmers who own it in the same locality.
The perfect place to store goods like refrigerated godowns could be shared among farmers.


By Carbon
Keep intouch, interact, view and share insights and projects with your github followers and teammates!


The Apache Geode topology options allow you to scale horizontally and vertically.
Apache Geode provides a variety of cache topologies:
- At the core of all systems is the single, peer-to-peer distributed system.
- For horizontal and vertical scaling, you can combine individual systems into client/server and multi-site (WAN) topologies:
- In client/server systems, a small number of server processes manage data and event processing for a much larger client group.
- In multi-site systems, several geographically disparate systems are loosely coupled into a single, cohesive processing unit.
Peer-to-Peer Configuration
The peer-to-peer distributed system is the building block for all Geode installations. Peer-to-peer alone is the simplest topology. Each cache instance, or member, directly communicates with every other member in the distributed system. This cache configuration is primarily designed for applications that need to embed a cache within the application process space and participate in a cluster. A typical example is an application server cluster in which the application and the cache are co-located and share the same heap.
Client/Server Configuration
The client/server topology is the model for vertical scaling, where clients typically host a small subset of the data in the application process space and delegate to the server system for the rest. Compared to peer-to-peer by itself, the client/server architecture provides better data isolation, high fetch performance, and more scalability. If data distribution will put a very heavy load on the network, a client/server architecture usually gives better performance. In any client/server installation, the server system is itself a peer-to-peer system, with data distributed between servers. A client system has a connection pool, which it uses to communicate with servers and other Geode members. A client may also contain a local cache.
Multi-site Configuration
For horizontal scaling, you can use a loosely coupled multi-site topology. With multi-site, multiple Geode systems are loosely coupled, generally across geographical distances with slower connections, such as with a WAN. This topology provides better performance than the tight coupling of a single system, and greater independence between locations, so that each site can function on its own if the connection or remote site become unavailable. In a multi-site installation, each individual site is a peer-to-peer or Client/Server system.


{% extends 'casestudy/base.html' %} {% load static from staticfiles %} {% block quote_one_text %} Considering we are selling niche products to a small market, we never could have imagined achieving these types of sales. {% endblock %} {% block quote_one_name %} Shaun Loughlin {% endblock %} {% block quote_one_job_title %} Founder {% endblock %} {% block quote_one_link %} FreestyleXtreme {% endblock %} {% block main_content %}
They started out selling online in 2011 through eBay and launched eBay stores globally through the cross-border programme. FreestyleXtreme then further expanded their business by joining all of Amazon's 15 markets.
By selling on online marketplaces, FreestyleXtreme became successful exporters and are now a thriving business with a projected annual turnover of £17 million.
Their sales went from 0 to 1,000 NZD within a few days of listing on the New Zealand based TradeMe online marketplace platform. And it’s been a similar story on French online marketplaces La Redoute and Cdiscount.
FreestyleXtreme also had assistance from the Department for International Trade (DIT), who helped them set up a local cooperative to reduce international shipping costs. "Parcel Rate Experts" brought together local online retailers to get competitive rates and solve one of the main barriers to exporting.
{% endblock %} {% block quote_two_text %} E-marketplaces show you where there is overseas demand for your product. {% endblock %} {% block quote_two_name %} Shaun Loughlin {% endblock %} {% block quote_two_job_title %} Founder {% endblock %} {% block quote_two_link %} FreestyleXtreme {% endblock %}


EDITRES(1) EDITRES(1) NAME editres - a dynamic resource editor for X Toolkit applications SYNTAX editres [ -toolkitoption ... ] OPTIONS Editres accepts all of the standard X Toolkit command line options (see X(7)). The order of the command line options is not important. DESCRIPTION Editres is a tool that allows users and application developers to view the full widget hierarchy of any X Toolkit application that speaks the Editres protocol. In addition, editres will help the user construct resource specifications, allow the user to apply the resource to the application and view the results dynamically. Once the user is happy with a resource specification editres will append the resource string to the user's X Resources file. USING EDITRES Editres provides a window consisting of the following four areas: Menu Bar A set of popup menus that allow you full access to editres's features. Panner The panner allows a more intuitive way to scroll the application tree display. Message Area Displays information to the user about the action that editres expects of her. Application Widget Tree This area will be used to display the selected application's widget tree. To begin an editres session select the Get Widget Tree menu item from the command menu. This will change the pointer cursor to cross hair. You should now select the application you wish look at by clicking on any of its windows. If this application understands the editres protocol then editres will display the application's widget tree in its tree window. If the application does not understand the editres protocol editres will inform you of this fact in the message area after a few seconds delay. Once you have a widget tree you may now select any of the other menu options. The effect of each of these is described below. COMMANDS Get Widget Tree Allows the user to click on any application that speaks the editres protocol and receive its widget tree. Refresh Current Widget Tree Editres only knows about the widgets that exist at the present time. Many applications create and destroy widgets on the fly. Selecting this menu item will cause editres to ask the applica‐ tion to resend its widget tree, thus updating its information to the new state of the application. For example, xman only creates the widgets for its topbox when it starts up. None of the widgets for the manual page window are created until the user actually clicks on the Manual Page button. If you retrieved xman's widget tree before the the manual page is active, you may wish to refresh the widget tree after the manual page has been displayed. This will allow you to also edit the manual page's resources. Dump Widget Tree to a File For documenting applications it is often useful to be able to dump the entire application widget tree to an ASCII file. This file can then be included in the manual page. When this menu item is selected a popup dialog is activated. Type the name of the file in this dialog, and either select okay, or type a car‐ riage-return. Editres will now dump the widget tree to this file. To cancel the file dialog, select the cancel button. Show Resource Box This command will popup a resource box for the current applica‐ tion. This resource box (described in detail below) will allow the user to see exactly which resources can be set for the widget that is currently selected in the widget tree display. Only one widget may be currently selected; if greater or fewer are selected editres will refuse to pop up the resource box and put an error message in the Message Area. Set Resource This command will popup a simple dialog box for setting an arbi‐ trary resource on all selected widgets. You must type in the resource name, as well as the value. You can use the Tab key to switch between the resource name field the resource value field. Quit Exits editres. TREE COMMANDS The Tree menu contains several commands that allow operations to be per‐ formed on the widget tree. Select Widget in Client This menu item allows you to select any widget in the application; editres will then highlight the corresponding element the widget tree display. Once this menu item is selected the pointer cursor will again turn to a crosshair, and you must click any pointer button in the widget you wish to have displayed. Since some wid‐ gets are fully obscured by their children, it is not possible to get to every widget this way, but this mechanism does give very useful feedback between the elements in the widget tree and those in the actual application. Select All Unselect All Invert All These functions allow the user to select, unselect, or invert all widgets in the widget tree. Select Children Select Parents These functions select the immediate parent or children of each of the currently selected widgets. Select Descendants Select Ancestors These functions select all parents or children of each of the cur‐ rently selected widgets. This is a recursive search. Show Widget Names Show Class Names Show Widget IDs Show Widget Windows When the tree widget is initially displayed the labels of each widget in the tree correspond to the widget names. These func‐ tions will cause the label of all widgets in the tree to be changed to show the class name, IDs, or window associated with each widget in the application. The widget IDs, and windows are shown as hex numbers. In addition there are keyboard accelerators for each of the Tree opera‐ tions. If the input focus is over an individual widget in the tree, then that operation will only effect that widget. If the input focus is in the Tree background it will have exactly the same effect as the corre‐ sponding menu item. The translation entries shown may be applied to any widget in the appli‐ cation. If that widget is a child of the Tree widget, then it will only affect that widget, otherwise it will have the same effect as the com‐ mands in the tree menu. Flash Active Widgets This command is the inverse of the Select Widget in Client com‐ mand, it will show the user each widget that is currently selected in the widget tree, by flashing the corresponding widget in the application numFlashes (three by default) times in the flashColor. lb lb lb l l l. Key Option Translation Entry - space Uns‐ elect Select(nothing) w Select Select(widget) s Select Select(all) i Invert Select(invert) c Select Children Select(children) d Select Descen‐ dants Select(descendants) p Select Parent Select(parent) a Select Ancestors Select(ancestors) N Show Widget Names Relabel(name) C Show Class Names Relabel(class) I Show Widget IDs Relabel(id) W Show Widget Windows Rela‐ bel(window) T Toggle Widget/Class Name Relabel(toggle) Clicking button 1 on a widget adds it to the set of selected wid‐ gets. Clicking button 2 on a widget deselects all other widgets and then selects just that widget. Clicking button 3 on a widget toggles its label between the widget's instance name the widget's class name. USING THE RESOURCE BOX The resource box contains five different areas. Each of the areas, as they appear on the screen, from top to bottom will be discussed. The Resource Line This area at the top of the resource box shows the current resource name exactly as it would appear if you were to save it to a file or apply it. The Widget Names and Classes This area allows you to select exactly which widgets this resource will apply to. The area contains four lines, the first contains the name of the selected widget and all its ancestors, and the more restrictive dot (.) separator. The second line contains less specific the Class names of each widget, and well as the less restrictive star (*) separator. The third line contains a set of special buttons called Any Widget which will generalize this level to match any widget. The last line contains a set of special but‐ tons called Any Widget Chain which will turn the single level into something that matches zero or more levels. The initial state of this area is the most restrictive, using the resource names and the dot separator. By selecting the other but‐ tons in this area you can ease the restrictions to allow more and more widgets to match the specification. The extreme case is to select all the Any Widget Chain buttons, which will match every widget in the application. As you select different buttons the tree display will update to show you exactly which widgets will be effected by the current resource specification. Normal and Constraint Resources The next area allows you to select the name of the normal or con‐ straint resources you wish to set. Some widgets may not have con‐ straint resources, so that area will not appear. Resource Value This next area allows you to enter the resource value. This value should be entered exactly as you would type a line into your resource file. Thus it should contain no unescaped new-lines. There are a few special character sequences for this file: \n - This will be replaced with a newline. \### - Where # is any octal digit. This will be replaced with a single byte that contains this sequence interpreted as an octal number. For example, a value containing a NULL byte can be stored by specifying \000. \<new-line> - This will compress to nothing. \\ - This will compress to a single backslash. Command Area This area contains several command buttons, described in this sec‐ tion. Set Save File This button allows the user to modify file that the resources will be saved to. This button will bring up a dialog box that will ask you for a filename; once the filename has been entered, either hit carriage-return or click on the okay button. To pop down the dia‐ log box without changing the save file, click the cancel button. Save This button will append the resource line described above to the end of the current save file. If no save file has been set the Set Save File dialog box will be popped up to prompt the user for a filename. Apply This button attempts to perform a XtSetValues call on all widgets that match the resource line described above. The value specified is applied directly to all matching widgets. This behavior is an attempt to give a dynamic feel to the resource editor. Since this feature allows users to put an application in states it may not be willing to handle, a hook has been provided to allow specific applications to block these SetValues requests (see Blocking Editres Requests below). Unfortunately due to design constraints imposed on the widgets by the X Toolkit and the Resource Manager, trying to coerce an inher‐ ently static system into dynamic behavior can cause strange results. There is no guarantee that the results of an apply will be the same as what will happen when you save the value and restart the application. This functionality is provided to try to give you a rough feel for what your changes will accomplish, and the results obtained should be considered suspect at best. Having said that, this is one of the neatest features of editres, and I strongly suggest that you play with it, and see what it can do. Save and Apply This button combines the Save and Apply actions described above into one button. Popdown Resource Box This button will remove the resource box from the display. BLOCKING EDITRES REQUESTS The editres protocol has been built into the Athena Widget set. This allows all applications that are linked against Xaw to be able to speak to the resource editor. While this provides great flexibility, and is a useful tool, it can quite easily be abused. It is therefore possible for any Xaw application to specify a value for the editresBlock resource described below, to keep editres from divulging information about its internals, or to disable the SetValues part of the protocol. editresBlock (Class EditresBlock) Specifies which type of blocking this application wishes to impose on the editres protocol. The accepted values are: all Block all requests. setValues Block all SetValues requests. As this is the only editres request that actually modifies the application, this is in effect stating that the application is read-only. none Allow all editres requests. Remember that these resources are set on any Xaw application, not editres. They allow individual applications to keep all or some of the requests editres makes from ever succeeding. Of course, editres is also an Xaw application, so it may also be viewed and modified by editres (rather recursive, I know), these commands can be blocked by setting the editresBlock resource on editres itself. RESOURCES For editres the available application resources are: numFlashes (Class NumFlashes) Specifies the number of times the widgets in the application will be flashed when the Show Active Widgets command in invoked. flashTime (Class FlashTime) Amount of time between the flashes described above. flashColor (Class flashColor) Specifies the color used to flash application widgets. A bright color should be used that will immediately draw your attention to the area being flashed, such as red or yellow. saveResourcesFile (Class SaveResourcesFile) This is the file the resource line will be append to when the Save button activated in the resource box. WIDGETS In order to specify resources, it is useful to know the hierarchy of the widgets which compose editres. In the notation below, indentation indi‐ cates hierarchical structure. The widget class name is given first, fol‐ lowed by the widget instance name.  TransientShell resourceBox Paned pane Label resourceLabel Form namesAndClasses Toggle dot Toggle star Toggle any Toggle name Toggle class . . . Label namesLabel List namesList Label constraintLabel List constraintList Form valueForm Label valueLabel Text valueText Box commandBox Command setFile Command save Command apply Command saveAndApply Command cancel Grip grip Grip grip ENVIRONMENT DISPLAY to get the default host and display number. XENVIRONMENT to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. FILES /etc/X11/app-defaults/Editres specifies required resources SEE ALSO X(7), xrdb(1), Athena Widget Set RESTRICTIONS This is a prototype, there are lots of nifty features I would love to add, but I hope this will give you some ideas about what a resource edi‐ tor can do. AUTHOR Chris D. Peterson, formerly MIT X Consortium X Version 11 editres 1.0.5 EDITRES(1)


---
layout: default
title: 'A blog about culture, software, and video games.'
meta: 'Currently under construction'
picture: index.jpg
attr: '"[Metal Gear] Weapon Menu",
CC BY-NC-SA 2.0 by
Víctor Arce;
scaled up and desaturated.'
---
{% for post in site.posts %}
{% if post.description %}{{post.description}} - {% endif %}
Read more
Written on


Justin is a passionate proponent of the transformative potential of Agile, Lean and DevOps in large enterprises and the transformational role of technology leaders in business. As he has progressed in his career he has become convinced that the future requires talented managers of talent as much as it does technologists.
Justin is currently the Chief Technology Officer for Wealth and Personal Banking at HSBC, responsible for cloud, devOps, data and messaging technology platforms and resilience, SRE and engineering practises, globally.
Previously, he was Senior Vice President and Head of The Platform Organisation at ScotiaBank in Toronto, Canada. PLATO was a platform software company inside Scotiabank, building cloud, devops, API and big data infrastructure for Scotiabank businesses globally. As VP of Transformation at CHEF Software he built and led a team helping large enterprises become high velocity software businesses.
Before this, Justin was at GE Capital for almost 10 years. As CTO of EMEA he led the Europe-wide functional restructuring of the IT organisation and as Global Chief Architect he introduced and sponsored an integrated approach to agile, Lean and DevOps.
Justin has been an executive on four continents, having worked in over 40 countries; working in Financial Services for the last 20 years in diverse areas as innovation, venture capital and consulting.
All comments and opinions on this blog are his alone, and not necessarily endorsed by employers past or present.
Justin is also the lead maintainer of the Continuous Transformation Practise, open sourced on github under creative commons, available here.
With Mark Birch, Justin presents a podcast, The Heretechs.
Justin reads voraciously, especially philosophy and poetry, and enjoys hiking with his family - wife Nina, and son Sebastian. And dogs, Bounce and Bramble.


Port scroll system sucks...

Try finding one good point about this system:
betting this will pop up "players will set up the economy" what if 1 guild decides to not share? then bye bye to all melee characters because they wont have a chance in hell to get porters, this makes every melee a fail if he doesnt have caster friends.. kk thnx bb
Besides, a caster can already fast port clear marks if he wants, a melee character has to use drops for this... quiiiiite imbalanced since porters cant be gotten anywhere but guild geosid.
if i dont have a guild i dont get port scrolls, if i lose gear i cant get back to it unless some one gives me or i find it in bazaar wich nobody does because nobody buys from bazaar, the merch should sell these on a regular basis.
Try finding one good point about this system:
betting this will pop up "players will set up the economy" what if 1 guild decides to not share? then bye bye to all melee characters because they wont have a chance in hell to get porters, this makes every melee a fail if he doesnt have caster friends.. kk thnx bb
Besides, a caster can already fast port clear marks if he wants, a melee character has to use drops for this... quiiiiite imbalanced since porters cant be gotten anywhere but guild geosid.


Wi-fi connectivity is available across all trains and stations which and is provided by Du which is in par with the Wi-Fi UAE program which provides Wi-Fi connectivity across major parts of UAE. Mobile phone coverage is available across the entire network of the metro. The metros itself has Wi-Fi connectivity inside for the commuters to access with 2-tiers of internet access with the normal service being free whereas the premium service can be access by a nominal fee.


The Board of Divinity
-QOTD or Joke of the Day- (eg. Build a man a fire, he'll be warm for the night. Set a man on fire, he'll be warm for the rest of his life.)
project title
project description
project title
project description
project title
project description
project title
project description
project title
project description
project title
project description
project title
project description
project title
project description
Featured DCuber Of The Month
-Name-
-3 Facts about them-
New Kids On The Block
-Name-
Role/Dept:
-3 Facts about them-
-Name-
Role/Dept:
-3 Facts about them-
Upcoming Birthdays
-name and date of birth-
-name and date of birth-
Key Contacts
-name, role, number-
-name, role, number-
-name, role, number-
Upcoming Events
-event details
-event details
Research Opportunity
-test details
-test details
Non-Work Activities
-activity details
-activity details


When a web designer is creating a webpage it is really important for them to think of the page from a user's perspective. Everything should be kept relatively simple so that each page is easy to use. Information should be displayed clearly and concisely so that it is easy for the user to read. Images should be displayed in a clean way and should not take away from information on the page. Text should not be written in large blocks, but instead spread throughout the page.
Hopefully this information helped you uunderstand more about elements of design and how they are implemented in pages you look at everyday without even noticing sometimes!
Click here to see what Moose has to say!


public abstract class BluetoothPeripheralManagerCallback
extends java.lang.Object
| Constructor and Description |
|---|
BluetoothPeripheralManagerCallback() |
| Modifier and Type | Method and Description |
|---|---|
void |
onAdvertiseFailure(@NotNull AdvertiseError advertiseError)
Advertising has failed
|
void |
onAdvertisingStarted(@NotNull AdvertiseSettings settingsInEffect)
Advertising has successfully started
|
void |
onAdvertisingStopped()
Advertising has stopped
|
void |
onCentralConnected(@NotNull BluetoothCentral bluetoothCentral)
A remote central has connected
|
void |
onCentralDisconnected(@NotNull BluetoothCentral bluetoothCentral)
A remote central has disconnected
|
void |
onCharacteristicRead(@NotNull BluetoothCentral bluetoothCentral,
@NotNull BluetoothGattCharacteristic characteristic)
A remote central has requested to read a local characteristic.
|
GattStatus |
onCharacteristicWrite(@NotNull BluetoothCentral bluetoothCentral,
@NotNull BluetoothGattCharacteristic characteristic,
@NotNull byte[] value)
A remote central has requested to write a local characteristic.
|
void |
onDescriptorRead(@NotNull BluetoothCentral bluetoothCentral,
@NotNull BluetoothGattDescriptor descriptor)
A remote central has requested to read a local descriptor.
|
GattStatus |
onDescriptorWrite(@NotNull BluetoothCentral bluetoothCentral,
@NotNull BluetoothGattDescriptor descriptor,
@NotNull byte[] value)
A remote central has requested to write a local descriptor.
|
void |
onNotificationSent(@NotNull BluetoothCentral bluetoothCentral,
@NotNull byte[] value,
@NotNull BluetoothGattCharacteristic characteristic,
@NotNull GattStatus status)
A notification has been sent to a central
|
void |
onNotifyingDisabled(@NotNull BluetoothCentral bluetoothCentral,
@NotNull BluetoothGattCharacteristic characteristic)
A remote central has disabled notifications or indications for a characteristic
|
void |
onNotifyingEnabled(@NotNull BluetoothCentral bluetoothCentral,
@NotNull BluetoothGattCharacteristic characteristic)
A remote central has enabled notifications or indications for a characteristic
|
void |
onServiceAdded(@NotNull GattStatus status,
@NotNull BluetoothGattService service)
Indicates whether a local service has been added successfully.
|
public void onServiceAdded(@NotNull @NotNull GattStatus status, @NotNull @NotNull BluetoothGattService service)
status
- Returns SUCCESS if the service was added
successfully.service
- The service that has been addedpublic void onCharacteristicRead(@NotNull @NotNull BluetoothCentral bluetoothCentral, @NotNull @NotNull BluetoothGattCharacteristic characteristic)
This callback is called before the current value of the characteristic is returned to the central. Therefore, any modifications to the characteristic value can still be made. If the characteristic's value is longer than the MTU - 1 bytes, a long read will be executed automatically
bluetoothCentral
- the central that is doing the requestcharacteristic
- the characteristic to be readpublic GattStatus onCharacteristicWrite(@NotNull @NotNull BluetoothCentral bluetoothCentral, @NotNull @NotNull BluetoothGattCharacteristic characteristic, @NotNull @NotNull byte[] value)
This callback is called before the current value of the characteristic is set to value
.
The value should be checked and a GattStatus should be returned. If anything else than GattStatus.SUCCESS is returned,
the characteristic's value will not be updated.
The value may be up to 512 bytes (in case of a long write)
bluetoothCentral
- the central that is doing the requestcharacteristic
- the characteristic to be writtenvalue
- the value the central wants to writepublic void onDescriptorRead(@NotNull @NotNull BluetoothCentral bluetoothCentral, @NotNull @NotNull BluetoothGattDescriptor descriptor)
This callback is called before the current value of the descriptor is returned to the central. Therefore, any modifications to the characteristic value can still be made. If the descriptor's value is longer than the MTU - 1 bytes, a long read will be executed automatically
bluetoothCentral
- the central that is doing the requestdescriptor
- the descriptor to be readpublic GattStatus onDescriptorWrite(@NotNull @NotNull BluetoothCentral bluetoothCentral, @NotNull @NotNull BluetoothGattDescriptor descriptor, @NotNull @NotNull byte[] value)
This callback is called before the current value of the descriptor is set to value
.
The value should be checked and a GattStatus should be returned. If anything else than GattStatus.SUCCESS is returned,
the descriptor's value will not be updated.
The value may be up to 512 bytes (in case of a long write)
bluetoothCentral
- the central that is doing the requestdescriptor
- the descriptor to be writtenvalue
- the value the central wants to writepublic void onNotifyingEnabled(@NotNull @NotNull BluetoothCentral bluetoothCentral, @NotNull @NotNull BluetoothGattCharacteristic characteristic)
bluetoothCentral
- the centralcharacteristic
- the characteristicpublic void onNotifyingDisabled(@NotNull @NotNull BluetoothCentral bluetoothCentral, @NotNull @NotNull BluetoothGattCharacteristic characteristic)
bluetoothCentral
- the centralcharacteristic
- the characteristicpublic void onNotificationSent(@NotNull @NotNull BluetoothCentral bluetoothCentral, @NotNull @NotNull byte[] value, @NotNull @NotNull BluetoothGattCharacteristic characteristic, @NotNull @NotNull GattStatus status)
bluetoothCentral
- the centralvalue
- the value of the notificationcharacteristic
- the characteristic for which the notification was sentstatus
- the status of the operationpublic void onCentralConnected(@NotNull @NotNull BluetoothCentral bluetoothCentral)
bluetoothCentral
- the centralpublic void onCentralDisconnected(@NotNull @NotNull BluetoothCentral bluetoothCentral)
bluetoothCentral
- the centralpublic void onAdvertisingStarted(@NotNull @NotNull AdvertiseSettings settingsInEffect)
settingsInEffect
- the AdvertiseSettings that are currently activepublic void onAdvertiseFailure(@NotNull @NotNull AdvertiseError advertiseError)
advertiseError
- the error explaining why the advertising failedpublic void onAdvertisingStopped()