Here are our meetings for the week:
- Weekly GBM: As usual, we have our GBM on {gbm_date} at {gbm_time} over Zoom.
- Weekly Planning Meeting: If you are interested in planning great events, our weekly planning meeting is on {planning_date} at {planning_time} over Zoom.
- Weekly Tech Meeting: There is also a hack session on {hack_date} at {hack_time} over Zoom.


Heath Moore
Bio
Technologies
Projects
Check out my Github
Check out my LinkedIn
Email me
Bio goes here
Technologies


Student Association Election
Election Period:
Serial No.
Candidate ID
Candidate name
Candidate Elected


0
How Well Do You Lead?
Take our simple 2 minute survey to find out today.
About The Ivy Faculty
Question 1
I always gather the right information to ensure I understand what I need to know to succeed:
Strongly Agree
Agree
Disagree
Strongly Disagree
Question 2
I consistently make non bias, rational decisions and organise effective decision making in groups and teams:
Strongly Agree
Agree
Disagree
Strongly Disagree
Question 3
I employ techniques of persuasion and influence that generate trust inside and outside the organisation and result in me regularly gaining the acceptance and support required:
Strongly Agree
Agree
Disagree
Strongly Disagree
Question 4
I have a reliable systematic method for maximising performance of individuals & teams and accelerating improvement on key tasks and operations:
Strongly Agree
Agree
Disagree
Strongly Disagree
Question 5
As part of my role I engage in and measure creativity and innovation via an online system to ensure the organisation generates new and better products, practices and solutions:
Strongly Agree
Agree
Disagree
Strongly Disagree
Question 6
I want to be leader because is the man who carefully advances step by step who is bound to succeed in the greatest degree:
Strongly Agree
Agree
Disagree
Strongly Disagree
Submit
See Result


At the beginning of this week, in my pursuit of finding a company name worthy of my exponentially growing endeavors, I started looking for domain names to start building my brand.
Over the last month, stocks and cryptocurrency have put an interest in creating an auto trading bot I hope will further my experience in machine learning models and different API frameworks.
As I look for jobs and begin really searching for what I would like to accomplish in my software dev career, I have taken upon myself the challenge to expose myself to many different frameworks and languages I have yet to develop in.
I owe this webapp idea to my dad who brought up an idea for a simple construction calculator to figure out different specs for simple construction calculations. The challenges will come with my lack of experience in webapp frameworks like react and xamarin. I have choosen to go ahead and start learning flutter for its native ui elements and cross platform ability since the mobile device of preference I use is android and my fathers iOS device.


Maha political drama: Ajit Pawar returns home
Nationalist Congress Party leader Ajit Pawar, who was on Saturday sworn in as the deputy chief minister of Maharashtra, returned to his private residence near Churchgate in Mumbai in the early hours of Sunday, sources said.
He spent Saturday at his brother's home in Mumbai even as his uncle and NCP chief Sharad Pawar attended a party meeting where most of the NCP MLAs were present.
Meanwhile, a meeting of BJP legislators is slated in Mumbai on Sunday, a day after Devendra Fadnavis was sworn in as the chief minister again.
The NCP, Congress and Shiv Sena are trying to ensure their MLAs are not poached.
In view of this, the NCP and Shiv Sena have moved their legislators to luxury hotels in Mumbai, while the Congress sources said they may take their MLAs to Jaipur.
In the 288-member state assembly, the BJP government will have to prove that it has the backing of 145 legislators.
There has been no official confirmation on reports that the governor has asked Fadnavis to prove his majority in the assembly by November 30.
In a stunning turn of events, Fadnavis on Saturday returned as chief minister propped up by Ajit Pawar, who was made his deputy, just hours after the new alliance of Shiv Sena, the NCP and the Congress reached a consensus that Sena chief Uddhav Thackeray will be their chief ministerial candidate.
Fadnavis and Ajit Pawar were sworn in by Koshyari at a hush hush ceremony, leading to lifting of the President's rule in the state.
Speaking to BJP workers at the party office after being sworn in, Fadnavis said he would give Maharashtra a strong government with Ajit Pawar's support.
Ajit Pawar's volte face created fissures in the NCP, whose chief Sharad Pawar distanced himself from his nephew's dramatic action, saying the decision to back Fadnavis was his personal choice and not that of the party.
On Saturday evening, the NCP removed Ajit Pawar as the party's legislature unit head, saying his move was not in line with the party's policies.
The Shiv Sena also approached the Supreme Court against the "arbitrary and malafide actions/decisions" of Governor Koshyari of swearing in Fadnavis.


You could swerve out of the way to avoid the crash...
... or you can hope they swerve ...
...or you might both swerve.
You can either chicken out and swerve away or stay cool and keep straight.
Remember that your partner has to consider the same options.

If you chicken out, but your partner stays cool, you look super uncool but at least no one is hurt.

Summary of the Chicken PAYOFF MATRIX
Traditional PAYOFF MATRIX


SUBCELLULAR LOCALIZATION OF GLUTAMIC ACID AND OTHER 3H-AMINO ACIDS IN CEREBRAL CORTICAL SLICES OF THE RAT
oy Michael. J; Kuhar
A dissertation submitted to The Jonns Hopkins University in conformity with the requirements for the degree of Destor of Philosophy
Baltimore, Maryland 1970
Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.


Preparation time
overnight
Cooking time
1 to 2 hours
Serves
Serves 4
If you have time to leave the chicken overnight to marinate, it will really benefit from it.
Put the chicken thighs in a bowl and season with salt and pepper.
Put all the marinade ingredients into a small food processor and blend to a paste – add a little water if needed.
Pour the marinade over the chicken and mix thoroughly to make sure the chicken is completely covered. Cover and leave for as long as you can – at least a couple of hours, but overnight is better. If you are leaving it out for longer than an hour, put the chicken in the fridge.
For the curry, heat the vegetable or coconut oil in a large casserole. Add the onion and cook on a medium heat for several minutes until starting to turn golden brown. Add the chicken and the marinade to the casserole – the idea is not to brown the chicken, but do give the marinade ingredients a couple of minutes to cook before adding the stock or water.
Add the tomatoes, thyme and bay leaves and season with salt and pepper. Bring to the boil, then turn the heat down, cover, and leave to simmer for around 40 minutes.
Add the pumpkin and cook for a further 10 minutes, covered. Pour in the lime juice and the rum, if using. Remove the lid and cook for another 5-10 minutes to reduce the sauce slightly and finish off cooking the pumpkin.
Serve with steamed rice and topped with sliced spring onions and fresh parsley or coriander.


Cookie Stand
Sales Page Store Information About Us MerchandiseOur Locations
Old Mill
380 SW Powerhouse Dr, Bend, OR 97702
Hours of Operation: 10AM -10PM, 7 days a week
Pilot Butte
1000 NE 12th St, Bend, OR 97702
Hours of Operation: 10AM -10PM, 7 days a week/p>
Les Schwab Amphitheater
344 SW Shevlin Hixon Dr, Bend, OR 97702
Hours of Operation: 10AM -10PM, 7 days a week
Tower Theater
835 NW Wall St, Bend, OR 97701
Hours of Operation: 10AM -10PM, 7 days a week
Drake Park
777 NW Riverside Blvd, Bend, OR 97701
Hours of Operation: 10AM -10PM, 7 days a week
Back to TopBuy our stuff
Back to TopAbout Us
We are a fun loving, fish cookies eating family. Love fish!
Back to Top


Jack Leach reflects on whirlwind summer after "draining" Ashes Tests
EXCLUSIVE: Leach was one of the stars during England's extraordinary one-wicket victory over Australia at Headingley which is regarded as one of the greatest Tests ever
by Alex SmithJack Leach might have become a cult hero – but his whirlwind summer came at a cost.
The bespectacled England star started 2019 having played four away Tests, battling to be his country’s main spinner and largely anonymous to the public.
The left-armer flew to New Zealand last week having written his page in folklore with his iconic one not out – with all the wiping of glasses and near run outs – as part of Ben Stokes’ outrageous match-winning stand at Headingley.
But the demanding series with Australia and the attention that came with it drained the Somerset bowler.
“I felt tired at the end of the summer,” said Leach, 28, who has not bowled in anger since the end of September. “Mentally especially, a series of that magnitude is draining and the hype around it. It takes a lot out of you.
“Having that time off and getting away from cricket and doing a bit of thinking of how you want to take your game forward, and where your game is at, was a really good exercise for me.
“Then the last couple of weeks I feel I have taken my game on again, mainly by going back to my basics, improving my game with bat and ball and remembering what is important to me when I am at my best.
“I feel like I have nailed them down a little bit more. It is nice to have a couple of weeks out of competition to work on your game and not worry about the game around the corner.”
When Leach went to New Zealand 18 months ago he was a nervous wreck awaiting his international debut.
He was a late call-up following injury to Mason Crane and played in the second Test at Christchurch – taking two wickets as the Kiwis clawed their way to a draw to save the series.
Now it is Matt Parkinson’s turn to have butterflies in his stomach, the Lancashire leg-spinner hoping to be given his Test cap next week. Leach passed on some advice to the 23-year-old. He said: “I’d been working towards that for a while and when it’s actually happening it’s a scary thing but one that you massively want to experience.
“It is important for Matt coming into the set-up that he stays true to himself and does exactly what he’s done for his county. That is what has got him to international level.
“He’s a very exciting player, has a great record in the early part of his career. He’s going to be a wicket-taker and he gives the ball a big rip.”
Chris Silverwood might be no stranger to the England set-up but his promotion from bowling coach to head coach begins a new era for England. “‘Spoons’ is a really good man-manager which will suit the head coach role really well,” said Leach.
- Jack Leach was having his eyes tested by Specsavers, official Test partner of the England cricket team


(some are fairly stale as of 2008-11, will review early 2009 unless anyoneone needs something urgently - in which case please mail me)
Studio - xmlns:prj="http://purl.org/stuff/studio/"
Pet Profiles - xmlns:pet="http://purl.org/stuff/pets"
IBIS (Issue-Based Information Systems) -
xmlns:ibis="http://purl.org/ibis"
Project - xmlns:prj="http://purl.org/stuff/project/"
Pet Profiles - xmlns:pet="http://purl.org/stuff/pets"
IBIS (Issue-Based Information Systems) -
xmlns:ibis="http://purl.org/ibis"
W6 (who, what, why, when, where, how)
- xmlns:w6="http://purl.org/ibis/w6#"
Review Vocabulary - xmlns:rev="http://purl.org/stuff/rev#"
SSR (Simple Semantic Resolution for RSS 2.0) -
xmlns:ssr="http://purl.org/stuff/ssr"


File Name: {{ card.fileName }}
Package Name: {{ card.name }}
Common Name: {{ card.commonName }}
Organization: {{ card.organization }}
Organizational Unit: {{ card.organizationalUnit }}
Valid From: {{ card.validFromDt }}
Valid Until: {{ card.validUntilDt }}
ID: {{ card.id }}
ID Type: {{ card.idType }}
Publisher: {{ card.publisher }}
Product Name: {{ card.productName }}
Bundle ID: {{ card.bundleId }}
Version: {{ card.version }}
Score: {{ card.score }}
Is Compiler: {{ card.isCompiler }}
First Seen: {{ card.occurredDt }}
Flagged: {{ card.flagged }}
State: {{ card.state | toUiState: card.vote:card.cert | stateToDisplay }}
Last Changed State: {{ card.stateChangeDt }}
Notes:
{{ note }}


Fill in the URL you want to shorten below. Links expire in 24 hours.
Your new shortened URL is:
Error shortening your link. Please ensure it's a valid URL and starts with http:// or https://


Making a PyPI-friendly README¶
README files can help your users understand your project and can be used to set your project's description on PyPI. This guide helps you create a README in a PyPI-friendly format and include your README in your package so it appears on PyPI.
Creating a README file¶
README files for Python projects are often named README
, README.txt
, README.rst
, or README.md
.
For your README to display properly on PyPI, choose a markup language supported by PyPI. Formats supported by PyPI's README renderer are:
plain text
reStructuredText (without Sphinx extensions)
Markdown (GitHub Flavored Markdown by default, or CommonMark)
It's customary to save your README file in the root of your project, in the same directory as your setup.py
file.

For example, to set these values in a package's setup.py
file,
use setup()
's long_description
and long_description_content_type
.
Set the value of long_description
to the contents (not the path) of the README file itself.
Set the long_description_content_type
to an accepted Content-Type
-style value for your README file's markup,
such as text/plain
, text/x-rst
(for reStructuredText), or text/markdown
.
メモ
If you're using GitHub-flavored Markdown to write a project's description, ensure you upgrade the following tools:
python3 -m pip install --user --upgrade setuptools wheel twine
The minimum required versions of the respective tools are:
setuptools >= 38.6.0
wheel >= 0.31.0
twine >= 1.11.0
It's recommended that you use twine
to upload the project's distribution packages:
twine upload dist/*
For example, see this setup.py
file,
which reads the contents of README.md
as long_description
and identifies the markup as GitHub-flavored Markdown:
from setuptools import setup
# read the contents of your README file
from os import path
this_directory = path.abspath(path.dirname(__file__))
with open(path.join(this_directory, 'README.md'), encoding='utf-8') as f:
long_description = f.read()
setup(
name='an_example_package',
# other arguments omitted
long_description=long_description,
long_description_content_type='text/markdown'
)
Validating reStructuredText markup¶
If your README is written in reStructuredText, any invalid markup will prevent it from rendering, causing PyPI to instead just show the README's raw source.
Note that Sphinx extensions used in docstrings, such as
directives and roles
(e.g., ":py:func:`getattr`
" or ":ref:`my-reference-label`
"), are not allowed here and will result in error
messages like "Error: Unknown interpreted text role "py:func".
".
You can check your README for markup errors before uploading as follows:
Install the latest version of twine; version 1.12.0 or higher is required:
python3 -m pip install --upgrade twine
Build the sdist and wheel for your project as described under Packaging your project.
Run
twine check
on the sdist and wheel:twine check dist/*
This command will report any problems rendering your README. If your markup renders fine, the command will output
Checking distribution FILENAME: Passed
.


{% extends "welcome_page.html" %} {% block title %}
Comment {{ forloop.counter }} by {{ comment.name }} {{ comment.created }}
There are no comments yet.
Comment {{ forloop.counter }} by {{ comment.name }} {{ comment.created }}
{{ comment.body|linebreaks }}


1. Introduction
As the page is loading and while the user is interacting with the page afterwards, both the application and browser, queue various events that are then executed by the browser -- e.g. user agent schedules input events based on user’s activity, the application schedules callbacks for requestAnimationFrame and other callbacks etc. Once in the queue, these events are then dequeued one-by-one by the browser and executed.
However, some task can take a long time (multiple frames), and if and when that happens, the UI thread is locked and all other tasks are blocked as well. To the user this is commonly visible as a “locked up” page where the browser is unable to respond to user input; this is a major source of bad user experience on the web today:
- Delayed “time to Interactive”:
-
while the page is loading long tasks often tie up the main thread and prevent the user from interactive with the page even though the page is visually rendered. Poorly designed third-party content is a frequent culprit.
- High/variable input latency:
-
critical user interaction events (tap, click, scroll, wheel, etc) are queued behind long tasks, which yields janky and unpredictable user experience.
- High/variable event handling latency:
-
similar to input, but for processing event callbacks (e.g. onload events, and so on), which delay application updates.
- Janky animations and scrolling:
-
some animation and scrolling interactions require coordination between compositor and main threads; if the main thread is blocked due to a long task, it can affect responsiveness of animations and scrolling.
Some applications (and RUM vendors) are already attempting to identify and track cases where “long tasks” happen. For example, one known pattern is to install a ~short periodic timer and inspect the elapsed time between the successive calls: if the elapsed time is greater than the timer period, then there is high likelihood that one or more long tasks have delayed execution of the timer. This mostly works, but it has several bad performance implications: the application is polling to detect long tasks, which prevents quiescence and long idle blocks (see requestIdleCallback); it’s bad for battery life; there is no way to know who caused the delay (e.g. first party vs third party code)
RAIL performance model suggests that applications should respond in under 100ms to user input; for touch move and scrolling in under 16ms. Our goal with this API is to surface notifications about tasks that may prevent the application from hitting these targets.
1.1. Usage Example
var observer = new PerformanceObserver(function(list) { var perfEntries = list.getEntries(); for (var i = 0; i < perfEntries.length; i++) { // Process long task notifications: // report back for analytics and monitoring // ... } }); // register observer for long task notifications observer.observe({entryTypes: ["longtask"]}); // Long script execution after this will result in queueing // and receiving “longtask” entries in the observer.
2. Terminology
Long task refers to an event loop task that exceeds 50ms.
Frame or frame context refers to the browsing context, such as iframe (not animation frame), embed or object in which some work (such as script or layout) occurs.
Culprit frame refers to the browsing context (iframe, embed or object etc) that is being implicated, on the whole, for a long task.
Attribution refers to identifying the type of work (such as script, layout etc.) that contributed significantly to the long task AND which browsing context is responsible for that work.
3. Long Task Timing
Long Task timing involves the following new interfaces
3.1. PerformanceLongTaskTiming
interface
interfacePerformanceLongTaskTiming
: PerformanceEntry { readonly attribute FrozenArray<TaskAttributionTiming>attribution
; };
PerformanceLongTaskTiming
extends the following attributes of PerformanceEntry
interface:
-
The
name
attribute must returnDOMString
for minimal frame attribution. Possible values of name are:-
self
: long task is from within my own frame -
same-origin-ancestor
: long task is from a same-origin ancestor frame -
same-origin-descendant
: long task is from a same-origin descendant frame -
same-origin
: long task is from an unreachable same-origin frame -
cross-origin-ancestor
: long task is from a cross-origin ancestor frame -
cross-origin-descendant
: long task is from a cross-origin descendant frame -
cross-origin-unreachable
: long task is from a cross-origin unreachable frame -
multiple-contexts
: multiple frame contexts were involved in the long task -
unknown
: none of the above
-
-
The
entryType
attribute must return"longtask"
. -
The
startTime
attribute MUST return aDOMHighResTimeStamp
of when the task started. -
The
duration
attribute MUST return aDOMHighResTimeStamp
equal to the elapsed time between the start and end of task
PerformanceLongTaskTiming
adds the following attributes:
-
The
attribution
field returns a sequence ofTaskAttributionTiming
entries.
3.2. TaskAttributionTiming
interface
interface TaskAttributionTiming
: PerformanceEntry {
readonly attribute DOMString containerType;
readonly attribute DOMString containerSrc;
readonly attribute DOMString containerId;
readonly attribute DOMString containerName;
};
TaskAttributionTiming
extends the following attributes of PerformanceEntry
interface:
-
The
name
attribute must returnDOMString
indicating type of attribution. Currently this can"script"
. -
The
entryType
attribute must returnDOMString
"taskattribution"
-
The
startTime
attribute MUST return 0. -
The
duration
attribute MUST return 0.
TaskAttributionTiming
adds the following attributes:
-
The
containerType
attribute must returnDOMString
with type of frame container, such as"iframe"
,"embed"
,"object"
. -
The
containerName
attribute must returnDOMString
with container’sname
attribute. -
The
containerId
attribute must returnDOMString
with container’sid
attribute. -
The
containerSrc
attribute must returnDOMString
with container’ssrc
attribute.
3.3. Pointing to the culprit
Long task represents the top level event loop task. Within this task, different types of work (such as script, layout, style etc) may be done, and they could be executed within different frame contexts. The type of work could also be global in nature such as a long GC that is process or frame-tree wide.
Thus pointing to the culprit has couple of facets:
-
Pointing to the overall frame to blame for the long task on the whole: this is refered to as "minimal frame attribution" and is captured in the
name
field -
Pointing to the type of work involved in the task, and its associated frame context: this is captured in
TaskAttributionTiming
objects in theattribution
field ofPerformanceLongTaskTiming
Therefore, name
and attribution
fields on PerformanceLongTaskTiming
together paint the picture for where the blame rests for a long task.
When delivering this information the web origin-policy must be adhered to.
As an illustration, the TaskAttributionTiming
entry in attribution
is populated with "script" work, and the container or frame implicated in attribution should match up with the name
as follows:
value of name
| culprit frame implicated in attribution
|
|---|---|
self
| empty |
same-origin-ancestor
| same-origin culprit frame |
same-origin-descendant
| same-origin culprit frame |
same-origin
| same-origin culprit frame |
cross-origin-ancestor
| empty |
cross-origin-descendant
| empty |
cross-origin-unreachable
| empty |
multiple-contexts
| empty |
unknown
| empty |
4. Processing Model
4.1. Modifications to other specifications
4.1.1. HTML: event loop definitions
Each task gets an associated start time, end time, and script evaluation environment settings object set.
4.1.2. HTML: event loop processing model
Before Step #3:
-
Set the selected task’s start time to be the value that would be returned by the
Performance
object’snow()
method.
After Step #3:
-
Set the selected task’s end time to the value be the value that would be returned by the
Performance
object’snow()
method. -
Execute the §4.2.1 Report Long Tasks algorithm (below), passing in the selected task.
4.1.3. HTML: calling scripts
In prepare to run script, add a step at the end to add settings to the currently running task’s script evaluation environment settings object set.
4.2. Additions to the Long Task Spec
4.2.1. Report Long Tasks
Given a task task, perform the following algorithm:
-
If end time minus start time is less than the long tasks threshold of 50 ms, abort these steps.
-
Let destinationRealms be an empty set.
-
Determine the set of JavaScript Realms to which reports will be delivered:
For each environment settings object settings in task’s script evaluation environment settings object set:
-
Let topmostBC be settings’s responsible browsing context’s top-level browsing context.
-
Add topmostBC’s Window’s relevant Realm to destinationRealms.
-
Let descendantBCs be topmostBC’s active document’s list of descendant browsing contexts.
-
For each descendantBC in descendantBCs, add descendantBC’s Window’s relevant Realm to destinationRealms.
-
-
For each destinationRealm in destinationRealms:
-
Let name be the empty string. This will be used to report minimal frame attribution, below.
-
Let culpritSettings be null.
-
Process task’s script evaluation environment settings object set to determine name and culpritSettings as follows:
-
If task’s script evaluation environment settings object set is empty: set name to
“unknown”
and culpritSettings tonull
. -
If task’s script evaluation environment settings object set’s length is greater than one: set name to
"multiple-contexts”
and culpritSettings tonull
. -
If task’s script evaluation environment settings object set’s length is one:
-
Set culpritSettings to the single item in task’s script evaluation environment settings object set.
-
Let destinationOrigin be destinationRealm’s relevant settings object’s origin.
-
Let destinationBC be destinationRealm’s relevant settings object’s responsible browsing context.
-
If culpritSettings’s origin and destinationOrigin are [same origin]:
-
If culpritSettings’s responsible browsing context is an ancestor of destinationBC, set name to
“same-origin-ancestor”
. -
If culpritSettings’s responsible browsing context is a descendant of destinationBC, set name to
“same-origin-descendant”
.
-
-
Otherwise:
-
If culpritSettings’s responsible browsing context is an ancestor of destinationBC, set name to
“cross-origin-ancestor”
and set culpritSettings tonull
.NOTE: this is not reported because of security. Developers should look this up themselves.
-
If culpritSettings’s responsible browsing context is a descendant of destinationBC, set name to
“cross-origin-descendant”
.
-
-
-
-
-
Create a new
TaskAttributionTiming
object attribution and set its attributes as follows:-
Set attribution’s name attribute to
"script"
. -
Set attribution’s entryType attribute to
“taskattribution”
-
Set attribution’s startTime and duration to 0.
-
If culpritSettings is not null, and culpritSettings’s responsible browsing context has a browsing context container that is an iframe element, then let iframe be that element, and perform the following steps:
-
Set attribution’s frameName attribute to the value of iframe’s name content attribute, or null if the attribute is absent.
-
Set attribution’s frameSrc attribute to the value of iframe’s src content attribute, or null if the attribute is absent.
NOTE: it is intentional that we record the frame’s src attribute here, and not its current URL, as this is meant primarily to help identify frames, and allowing discovery of the current URL of a cross-origin iframe is a security problem.
-
Set attribution’s frameId attribute to the value of iframe’s id content attribute, or
null
if the attribute is absent.
-
-
-
Create a new
PerformanceLongTaskTiming
object newEntry and set its attributes as follows:-
Set newEntry’s
name
attribute to name. -
Set newEntry’s
entryType
attribute to“longtask”
-
Set newEntry’s
startTime
attribute to start time -
Set newEntry’s
startTime
attribute to end time minus start time -
Set newEntry’s attribution attribute to a new frozen array containing the single value attribution.
NOTE: future iterations of this API will add more values to the attribution attribute, but for now it only contains a single value.
-
-
Queue the PerformanceEntry newEntry on destinationRealm.
NOTE: the "queue a PerformanceEntry" algorithm will end up doing nothing if no observers are registered. Implementations likely will want to bail out from this algorithm earlier in that case, instead of assembling all the above information only to find out nobody is listening for it.
5. Security & Privacy Considerations
Long Tasks API adheres to cross-origin policy by including origin-safe attribution information about the source of the long task. There is a 50ms threshold for long tasks. Together this provides adequate protection against security attacks against browser.
However, privacy related attacks are possible, while the API doesn’t introduce any new privacy attacks, it could make existing privacy attacks faster. Mitigations for this are possible and discussed in the security review in this document.


This is a new post format I’m going to try out from time to time. I don’t remember where I saw the original idea, but that person suggested going back, reading old posts, and then commenting on changed perspectives as a method of reflection.
I use [Alan Levine’s](http://www.twitter.com/cogdog) [PHP script to dig up wold WordPress posts](http://stackoverflow.com/a/27569816/2278429) by simply visiting [blog.ohheybrian.com/random](http://blog.ohheybrian.com/random) and re-reading. Try it yourself for some vintage bennettscience.
_If you’d like perspective, [here is the original post](http://blog.ohheybrian.com/2014/10/the-new-education-economy-of-free)._
Paying for software continues to be a four-letter word in EDUland. Some of the reasons free services are important are legitimate (I only have so much of my own money to spend) and some aren’t (I’m a teacher, help me out). In particular,
We need to differentiate between the free sharing of ideas and the free sharing of products.
Also, there seems to have been a rise in EDU-ratti who suggest that you give away lessons and your custom materials away for free as long as you remember to buy their book on 50 ways to do that. There cannot be a double standard.
Alan (he’s shown up a lot in my posts lately) [says it much better than I do](http://cogdogblog.com/2016/10/flickr-cc0/):
I get hired to provide them as a service, despite the fact people can use my stuff for free. You make a living from providing services, consulting, ideas, not from digital stuff. If I was a pro photographer, I would hope to make money from the service, not the products. I would get more clients if they can find examples of my work in the world.
Looking back at the original article, I think that was the point I was trying to make. It’s not selling the product (the book, curriculum…whatever) that’s worth the cost, it’s the **service you provide in creating that product.**
The distinction is very small, but again, it gets to the idea that we have to value the time and effort – the service – that goes into creating any product, be it a book or software.
Consider the tools you’re using now. If it’s free, there is usually an option to send some love to the developers through a donation. If not, send them a note and ask how you can buy that person a beer.
Written on October 13th, 2016 by Brian Bennett Categorized in: Technology
Leave a comment


CHDIST(1) CHDIST(1) NAME chdist - script to easily play with several distributions SYNOPSIS chdist [options] [command] [command parameters] DESCRIPTION chdist is a rewrite of what used to be known as 'MultiDistroTools' (or mdt). Its use is to create 'APT trees' for several distributions, making it easy to query the status of packages in other distribution without using chroots, for instance. OPTIONS -h, --help Provide a usage message. -d, --data-dir DIR Choose data directory (default: $HOME/.chdist/). -a, --arch ARCH Choose architecture (default: `dpkg --print-architecture`). --version Display version information. COMMANDS create DIST [URL RELEASE SECTIONS] Prepare a new tree named DIST apt-get DIST <update|source|...> Run apt-get inside DIST apt-cache DIST <show|showsrc|...> Run apt-cache inside DIST apt-rdepends DIST [...] Run apt-rdepends inside DIST src2bin DIST SRCPKG List binary packages for SRCPKG in DIST bin2src DIST BINPKG List source package for BINPKG in DIST compare-packages DIST1 DIST2 [DIST3, ...] compare-bin-packages DIST1 DIST2 [DIST3, ...] List versions of packages in several DISTributions compare-versions DIST1 DIST2 compare-bin-versions DIST1 DIST2 Same as compare-packages/compare-bin-packages, but also runs dpkg --compare-versions and display where the package is newer. compare-src-bin-packages DIST Compare sources and binaries for DIST compare-src-bin-versions DIST Same as compare-src-bin-packages, but also run dpkg --compare-versions and display where the package is newer grep-dctrl-packages DIST [...] Run grep-dctrl on *_Packages inside DIST grep-dctrl-sources DIST [...] Run grep-dctrl on *_Sources inside DIST list List available DISTs COPYRIGHT This program is copyright 2007 by Lucas Nussbaum and Luk Claes. This program comes with ABSOLUTELY NO WARRANTY. It is licensed under the terms of the GPL, either version 2 of the License, or (at your option) any later version. Debian Utilities 2013-12-23 CHDIST(1)


Implementation Details
1. Neurosynth Dataset generation.
INcDb requires a Neurosynth dataset that it uses to generate Term Analyses. The generation of Neurosynth Dataset is a memory-intensive operation which is not suitable to be done on a remote server, which typically has less RAM.
We suggest the Dataset to be generated on a local machine. Follow the instructions on https://github.com/neurosynth/neurosynth to build your own Dataset (neurosynth_dataset.pkl
) and copy the Dataset to incdb-poc/app/data/assets/
.
With the Dataset in place, we can initialise the database and add the Analyses to the database. These analyses will then be used to compute the correlation of the Components with the Terms.
2. Flask Application
The main function of the INcDb is the repository browsing. This is implemented using database query and Flask routing mechanism. Flask routing function help to pass variable name through the URL and this variable is used to select the necessary data from the database to be displayed.
The user management was implemented using the Flask extension - Flask-User. The user management allow signed in users to create Collection and upload Raw Dataset.
Flask-WTF, a Flask extension, was used to simplify the creation of the complicated Collection’s form.
3. Computation of correlation between Component and Terms
Another key function performed by the INcDb is to compute the correlations of the Components uploaded by our client with the Terms Analyses generated by the Neurosynth Dataset generation. As requested by our client, we referenced the computation done by the open-sourced Neurosynth-Web, https://github.com/neurosynth/neurosynth-web/blob/master/nsweb/tasks/__init__.py, and implemented a similar decoding function for INcDb.
The decoding is done when new Processed Dataset is uploaded to the server by our client and the top 10 Terms (with the highest correlations) for each Component are stored in a text files on the remote server. These text files are retrieved to display the correlation values when user view the Component.
For each Component of the Processed Dataset, a row in the Decodings table (in the database) is also created and tagged with the Term that it has the higest correlation with.
4. Neurosynth Viewer
The main aspect of the web application is to provide a way to view different brain images. This was done using the Neurosynth Viewer framework to view and interact with brain imaging data on a web page, as well as Nipype + AFNI to prepare the imaging data for Terms for a specific Movie.
The Neurosynth Viewer is implemented within the HTML code as part of a Javascript block. Since this is a Python Flask application, macro fields are added as a placeholder for the location of the brain imaging data to help load the relevant images for dynamically generated web pages. These macro fields run Python functions written earlier that, when given the name of a Component or Movie, it will search within the directories in the server and send the files as an attachment to the Viewer.
Part of the functionality is assisted by the AFNI toolset, which makes it possible to merge multiple brain images into one image. This is useful for deriving a brain image for an individual Term for a specific Movie. The selection of these brain images is done by querying through the list if Components, and identifying the Components for the specific Movie and Term. This is saved in an array and fed to the AFNI toolset to merge.
This merging process is done after the decoding process upon upload by the admin. The Nipype Python package serves as an interface to provide Python functions to easily interact with the AFNI toolset.
5. Background task using Celery and Redis
To improve the user experience and efficiency, we have decided to make the decoding funciton a background task. By running the decoding asynchronously, the user (Dr. Skipper) will be able to turn to other pages of INcDb and continue with other tasks, or assign more decoding tasks for INcDb to work on, instead of having to wait on the page while the long-running task is being completed.
For implementing background tasks, the Celery task queue and Redis message broker are used. First of all, a Celery Worker as well as the Redis Server must be running (which we have set to start automatically with the server). A task is set to be run asynchronously by setting the method as a Celery Task in Flask, and calling it with a delay() decoration, which then a message is sent to the Redis server, translated and forwarded to the Celery Worker, and pushing that task onto the task queue.
Then the tasks in the task queue are completed in order by the Celery Worker.
Dependencies
The application is developed with a list of dependecies. The complete list of Python packages dependencies can be found at https://github.com/UCL-CS35/incdb-poc/blob/master/requirements.txt.
We will like to highlight a few key dependencies that were critical for the development of INcDb.
| Name | Role |
|---|---|
| Flask | The micro-framework that INcDb runs on. |
| Flask-User | Flask extension used to implement User Management feature. |
| Flask-WTF | Flask extension used to simply form creation. |
| Neurosynth | Neurosynth is used to generate analyses that is used for the decoding of the Processed Dataset uploaded by our client. |
| gunicorn | A Python WSGI HTTP Server to serve the Flask application. |
| celery | A task processing system used to manage background tasks like decoding. |
| Redis | Redis is used as message broker to pass messages between Flask application and Celery workers. |
Code Structure
The application first-level code structure is presented below and the role of each file or folder is explained.
- incdb-poc/
- app/
- Contains Models, Views (templates), Controllers, Static files (CSS, JS, Images, Fonts), Setup scripts
- data/
- Contains Neurosynth Dataset, Decoding results, Admin uploaded Processed Dataset, Generated memmaps, FAQ data
- default/
- docs/
- Documentations generated by Sphinx
- migrations/ * Migrations genereted (Currently empty)
- node_modules/
- Node modules required to run Neurosynth Viewer
- src/
- Coffeescript requred to run Neurosnyth Viewer
- tests/
- pytests written to test User Managemnent, Search, Creation of Collection
- uploads/
- Contains User uploaded Raw Dataset
- .gitignore
- Ignore Database and Data folders
- Aptfile
- Cakefile
- Guardfile
- LICENSE.txt
- manage.py
- Use to start the Flask application
- README.md
- requirements.txt
- List of Python packages required
- runserver.sh
- Bash script to run the the Flask application in development mode
- runtests.sh
- Bash script to run the Test Cases in /tests folder
- supervsiord.conf
- Supervisor configuration file used for Deployment
- app/
For the complete code, you can view them on GitHub.


Wishing everybody a wonderful entry in the new year and be 2002 a wonderful one for you!
France Banking Works on Strike
Well that was about to happen. 400.000 banking workers are going on strike on january 1st 2002, which is by the way the day the EURO comes out. They want more money. If that won’t be fun ;)
Swing When You’re Winning
Ok, I have to admit it and I think many of you should try the album out.
Robbie Williams - Swing when you’re winning
It’s Robbie Williams performing old swing classics. He wowed the crowd when performing the album (never heard before) at the Royal Albert Hall with the Royal Albert Hall Swing Orchestra. It sold 1 Million copies within a week, the album that is. A DVD seems to be out from the concert, the audio cd is a normal studio recording.
You have most likely heard of it already, but I needed to point it out. Just listening to the live concert recorded from the TV.
The CD: http://www.amazon.com/exec/obidos/ASIN/B00005RFVL/qid=1009551893/sr=8-1/ref=sr_8_71_1/104-6418932-6975136
I only found the DVD of the concert in Germany: http://www.amazon.de/exec/obidos/ASIN/B00005T7AQ/qid=1009552579/sr=8-4/ref=sr_aps_prod_4_2/028-5161678-0973338
But co.uk should work also. It’s called Robbie Williams - Live At The Albert
I Look Like Harry Potter
Now it is out, I look like Harry Potter. Scot Hacker has published an article about his trip from BeOS to MacOS X and that got the BeOS fanatics talking again. And as I was doing BeNews with Scot I am in it too now ;)
Some people just don’t like to hear that BeOS is dead.
Well here is one post from the Yahoo BEOS stock board:

the hell w/Scot Hacker – we are Borg by: beforetoday 12/17/01 11:53 pm Msg: 58955 of 58958
Hey screw Hacker the little sissy. Nothing has changed and we still might come out ahead if Palm only agrees to payout a share dividend to Us, the current Be shareholders. Hacker had one big problem getting the word out with Be, he continuously courted the NERD crowd and could never get it on with normal Joe’s. So, he wasn’t the right spokesman – same for that punk over at BeNews, the Harry Potter lookalike Oliver.
None of the past will matter as long as Palm finds their balls somewhere and turns into a man and plays fair with past shareholders.  Say bye bye to Mac OS, remember, Hacker lives in the world of lllong nerds, sorry guy…
 (original message)
Sorry for not having a clouded mind people of the Yahoo Message boards ;)
Popups
These popup people are getting better you know. I just got this when browsing around Palmgear.com with a friend.
<!– more –>

Now as you might see, there is no border of any kind. It is an image in a new browser window that is one big link. Grrr…
Joined Infosync.no
I am starting to be very happy with my decision to join Infosync.no. Somehow I can’t get off the train to write stuff and be part of some group doing news online in some interesting field. The Infosync.no crew is wonderful and the site is actually going well. You know, you can get companies to by advertising in that field ;)
And I might get some fun gadgets to try out. Already written some articles on mobile payment, bluetooth and currently sitting here educating myself for a knowledgebase writing stuff like the history of GSM, info on Bluetooth, what is GPRS, info on UMTS, … actually very interesting.
If you want to be hit dead by acronyms, try getting a specification from etsi.org. If you go for something about the interface between a base station and some other base station part that links to the mobile phone then you will really be in deep trouble understanding anything ;)
Damn Damn Damn!!!
Ok, so I read Scot’s article:
http://www.osnews.com/story.php?news_id=421
It’s about his move from BeOS to MacOS X more or less. Long and very detailed and a wonderful read.
For today, I will put Scot on my hate list (sorry Scot ;)). Why? Recently I was kind of happy again with my decision to go with Windows for now, mostly because of price. Now, I am back thinking that I need a Mac! Damn! Damn! Damn! I am too easily influenced and Scot is too good of a writer.
Ah well. It’s not like it’s a real problem.
The Mac Idea Is Off
I think I put the idea of getting a Mac off again. Mainly due to a money issue.
I recently built a PC for a friend:
- 1.2 Ghz Thunderbird CPU
- 512 MB RAM
- 40 Gig IBM harddisk
- CD-RW drive (40x,20x,10x if I remember correctly)
- DVD Drive
- 5.1 Surround Sound Card with Speakers from MS-Tech
- Network Card (100/10 mbit)
- 64 MB Geforce2
Price: about 900 EUR
I won’t even get the cheapest iMac for that. I have to admit this does not include software but still. A good G4 costs 3400 EUR here at the moment. I couldn’t even spend that in a PC shop in Aachen, well almost :)
I might still get one some time but at the moment I like working around on a desktop system too much. If I get a new laptop in half a year or a year or something then I still might think about it. Just might. But then I need a PowerBook as a need a PCMCIA card.
Oh boy, I have problems ;)
Better Now
I was at the doctors on monday and it seems I am well again. My lung capacity is at 70-90% again which means that the problems were most likely due to the, it seems very heavy, infection that I had. My cough is also better which means I should be fine.
My lungs are still easily attacked and I will continue to take medicine to get my lung 100% back on track for sure until the end of the week and I will continue to take Asthma treatment once a day for roughly a month just to be sure that nothing happens until I go again in January.
More will be looked at then but 99% of this seems to be due to infection.
So I am all fine and well. I even ran a bit ;)
What’s With the War Anyway?
It’s out; Cahners In-Stat Group announced that they are sticking by their forecasts of 13 million shipments of Bluetooth chips which might surprise some - but I’m not. Why? (Originally published on infoSync)
<!– more –>
First let’s take a closer look at the amazing myth that 802.11b will directly compete with Bluetooth. I have an 802.11b card in my laptop and believe it or not, my battery time decreases by 30% or more when I use it. That’s just to tell you that 802.11b is something that consumes a lot of power. It is also very powerful in that you can set up wonderful high bandwidth connection between computers and very easily set up a network in your home (like me) or office. It’s for networking.
There are other things you might want to connect wirelessly though, like your mobile phone to your pda. Or your printer to your computer setup. Or your keyboard and mouse to all your computers in your house. Do you really think that an expensive, high bandwidth 802.11b card will be installed in all those devices to let them interconnect? This is exactly where Bluetooth will come in. It is really small, it is really cheap and it requires a lot less power. It is also slower, but who cares. I doubt you can type on your keyboard at speeds that will require 11 Mbit/s of bandwidth. We don’t have mobile phones yet that have an 11 Mbit/s network connection so if my Visor is only connected at 1 Mbit/s to my phone then that will be more than enough.
With the above short paragraph I hope I have moved the "802.11b will kill Bluetooth" myth out of your head. Now let’s go on to see what we can do with Bluetooth now, in the near future and what I might want to be able to do with Bluetooth.
As of the Bluetooth SIG there are already 443 qualified Bluetooth products. Just to give you a small idea of the list, here are a few products by the better known companies.

3COM Corporation: Bluetooth card and USB Hub

Compaq Computer Corporation: Compaq iPAQ H3870 Pocket PC with Integrated Bluetooth, Bluetooth Multiport Module
Ericsson Mobile Communications AB: Headset, Phone Adapter, R520m(c), Development Kit, T39m(c) and T68m(c)

Fujitsu Limited: Wireless Modem Access Point, PCMCIA Card, FMV-Biblo NE6/650W laptop, Lifebook B-2547

Hitachi Ltd.: Flora 220FX personal computer and FLORA 270HX notebook personal computer

IBM Corporation: PC-Card, Ultraport Module, PC Card II

Microsoft: Bluetooth Stack for Windows CE

Motorola: Timeport 270, Mini PCI Card, PC Card, Speaker Mic, USB Adapter, Clip-on Accessory, Phone Module

NEC Corporation: several personal computers

Nokia: Connectivity Battery, Connectivity Card

Palm: Bluetooth stack for Palm OS

Sharp Corporation: several mobile phones, wireless headset

Siemens AG: USB Dongle, MPI-ADapter, Stand Alone System, LAN Access Point

Sony Corporation: Several notebooks, cdmaOne C413S mobile phone, modem adapter

TDK Systems Europe Ltd.: USB Adapters and PC-Cards

There are also newer companies like DigiAnswer AS who have components, protocol analysers, a phone module, a PC card, a headset and more. All in all I think you will see that the list is very long. There are a lot of big and small names who have their power behind this.
But why does it take so long to get these products in our hands? Once again, there is a simple answer. If you want something fast, then you just do it. Do your thing. Release a Bluetooth headset and a Bluetooth phone and you are done. The problem is that if nobody else adapts your protocol and technology then you will be talking to yourself and only yourself. That’s where standards come in, like the one developed by the Bluetooth SIG. It takes a lot longer to get it done but at the end we will, hopefully, have a large number of devices talking to each other. Let’s just hope that not too many companies will try to do their own thing on top of the specs.
Some of you might still be wondering though what all the fuss is about. Here are just a few possibilities.
 If you want to write a quick e-mail you take your PDA out and it will talk wirelessly with the mobile phone in your pocket and use that to send the e-mail. No extra contract is needed to get your PDA hooked up wirelessly.
You then have to take a short trip with your car and once you get in your mobile phone will tell your handsfree set that it is there and when your friend rings a few minutes later you just say "Accept Call!"  Your friend tells you that he has a sample contract for you to look at and you tell him to send it to your PDA mail address. Seconds later you feel your PDA vibrating telling you a new mail arrived.
Once you are at home you decide to print out the sample contract you received on your PDA via e-mail which will work by pressing one button on the PDA once it is closer than 10 meters to your printer (provided it has bluetooth support). You put your mobile phone on the table too as it is hooked up to your home phone system now and all the phones at home will ring if there is an incoming call on the mobile phone. To relax, you take away the keyboard from the PC and take it over to the TV to surf around on the couch. Soon you decide to watch a movie and start the latest Star Trek episode on your hard disk recorder. At once your 14-way surround system, with speakers floating freely in the air all around the couch start playing the introduction music.
Ok, so we don’t have floating speakers yet but otherwise all of this is coming, and it is not coming with 802.11b!


tatk.dialog_agent package¶
Submodules¶
tatk.dialog_agent.agent module¶
Base class for agent
-
class
tatk.dialog_agent.agent.
BaseAgent
¶ Bases:
object
Base dialog agent class.
-
init_session
()¶
-
response
(input, sess)¶
-
-
class
tatk.dialog_agent.agent.
End2EndAgent
¶ Bases:
tatk.dialog_agent.agent.BaseAgent
End2End dialog agent base class.
-
class
tatk.dialog_agent.agent.
PipelineAgent
(nlu_model, tracker, policy, nlg_model)¶ Bases:
tatk.dialog_agent.agent.BaseAgent
Pipeline dialog agent base class, includes NLU, DST, Policy, NLG.
tatk.dialog_agent.session module¶
Session class
-
class
tatk.dialog_agent.session.
Session
(sys_agent, simulator, kb_query)¶ Bases:
object
A dialog controller which aggregates two agents to conduct a complete dialog session or to train the dialog policy model.
-
init_session
()¶
-
next_turn
(last_user_response)¶ Conduct a new turn of dialog, which consists of the system response and user response. Note that the system response comes first in each turn, and in the 1st turn its response can be like “hello, how can I help you”. The variable type of responses can be either 1) str or 2) dialog act, depends on the dialog mode settings of the two agents which are supposed to be the same. Args:
last_user_response: Last user response.
- Returns:
sys_response: The response of system. user_response:The response of user simulator. session_over (boolean): True if session ends, else session continues. reward (float): The reward given by the user.
-
train_sys
()¶ Train the parameters of system agent.
-
tatk.dialog_agent.system module¶
Dialog System derived from PipelineAgent
-
class
tatk.dialog_agent.system.
Dialog_System
(nlu_model, tracker, policy, nlg_model, mode=0)¶ Bases:
tatk.dialog_agent.agent.PipelineAgent
Pipeline dialog system
-
init_session
()¶ Init the parameters for a new session.
-
response
(input, sess)¶ Generate the response of system bot. Args:
- input (dict or str): Preorder user output. The variable type depends on the user model’s configuration,
i.e., if the user.nlg is not None, type(input) == str; else if user.nlg is None, type(input) = dict.
sess (Session):
- Returns:
output (str or dict): The output of system agent. action (dict): The dialog act of the output of system agent.
-
tatk.dialog_agent.user module¶
User simulator derived from PipelineAgent
-
class
tatk.dialog_agent.user.
User_Simulator
(nlu_model, policy, nlg_model, mode=0)¶ Bases:
tatk.dialog_agent.agent.PipelineAgent
Pipeline user simulator
-
init_response
()¶
-
init_session
()¶ Init the parameters for a new session.
-
response
(input, sess=None)¶ Generate the response of user. Args:
input: Preorder system output, a 1) string if self.mode == 0, else 2) dialog act if self.mode == 1.
- Returns:
output (str): User response, a 1) string if self.mode == 0, else 2) dialog act if self.mode == 1. session_over (boolean): True to terminate session, else session continues. reward (float): The reward given by the user.
-


Toggle navigation
INFINITY G
About Us
Contact Us
Login
Sign up
The Image Galary
Here are some beautiful collection of mine
Hope you will like it!


 Delila's Gift is a VR Picture book created using Tiltbrush! It tells the story of a small sea creature named Delila and her struggle to understand belonging, ownership, fear, othering, and the darkness surrounding her.
By using Tiltbrush and using these paintings to create a particle simulation, Delila's Gift lets the users literally *step* into the paintings, playing and pulling on them in an inherently physical fashion.


{% comment %} A small module that is used on the front page to display the support actions. Parameters: image string HTML-Element to use as the image. title string This actions title. content string The actions content (a more detailed descripton). url string The URL used to take the action. cta string The title shown in the CTA button. {% endcomment %}


It’s a highly debated topic, there are obvious pros and cons for both keeping your dependencies in or outside of your code repository.

Let’s see why.
- Once
git clone
is finished you’ll have everything, ready for work. In a CI / distributed environment this also means less chance for network issues, your build won’t fail just because a dependency manager’s server is down. Your builds will be more reliable, less error prone. - You see every dependency update in your repository, you can review the changes in
git
and decide whether you actually want to upgrade to a newer version or not. You can create a Pull Request for just the dependency updates and have it reviewed by your team. - It protects against disappearing packages / dependencies. Yes, it can happen that packages / dependencies disappear overnight from the package manager you use, and you’re no longer able to retrieve them.
- Makes the build process faster as well, as everything is prepared for the build and
there’s no need to call dependency manager tools, nor to download the dependencies separately.
- For example, if you use
CocoaPods
and you commit yourPods
directory and your CocoaPods generated.xcworkspace
directory (.xcworkspace
is actually a directory, which is presented as a file in Finder) to your repository then you can remove the CocoaPods Install Step from your bitrise.io workflow completely.
- For example, if you use
- No more issues with using different versions of the dependency manager tool. The most popular iOS dependency tools change quite frequently and sometimes introduce breaking changes. By including your dependencies inside your repository you won’t have to rely on using the exact same version of the tool everywhere (across your team and on your CI service as well).
- No more issues with private submodules / private pods. As described here Adding projects with submodules granting permission to a project which depends on private Pods, submodules or other git related dependencies can be quite hard. Most will simply not go through with activating and de-activating separate Deployment SSH keys for every dependency and will eventually just add the SSH key to their account or to a “bot” account as a personal SSH key. Using a bot user as described in the linked guide can be sufficient from a security perspective, but it’s still way easier (and more secure) to just use Read Only Deployment keys. A given SSH key is allowed to be registered only once on GitHub, which means that you can’t register the same SSH key for multiple repositories as Deployment Key. If you have every dependency in your repository you don’t have to use any workaround, a single read only Deployment Key will be enough. In fact bitrise.io registers Deployment Keys by default during the automatic repository setup, which grants access only to the specified repository.
Of course you’re free to go with either solution and we’ll keep working on supporting the way you work, but we think that having full control over dependency changes and having a more reliable setup (which is easier to work with in a remote, automation environment) provides enough advantage in most cases.