It is the rainy season in San Francisco, grab a cup of hot tea and take a look at our new February release!
finagle-core: Added gauge is_marked_dead
as an indicator of whether the host is marked
as dead(1) or not(0) in FailFastFactory
. 068a15e6
finagle-core: KeyCredentials.CertsAndKey
has been added as an option for
c.t.f.ssl.KeyCredentials
for when the certificate and certificate chain are
contained within the same file. b4a9e8cd
finagle-thriftmux: Additional information is now annotated in traces for clients using Scrooge generated Thrift bindings. c69a22f8, 32d9b56b, 6283c6ce. This includes:
finagle-http: Removed Http.Client.withCompressionLevel
because it wasn’t doing anything.
To migrate your client, simply remove the configuration–it had absolutely no effect.
87944371
finagle-http: c.t.f.dispatch.ExpiringServerDispatcher
was dead code. We removed it.
ae0571c9
finagle-thrift: Removed newIface
and newServiceIface
methods from
c.t.f.thrift.ThriftRichClient.MultiplexedThriftClient
, which are deprecated in November 2017.
773b6e57
finagle-thrift: Removed deprecated APIs located in Thrift.scala:
finagle-thrift: c.t.f.thrift.ThriftServiceIface.Filterable
is removed, use
c.t.f.thrift.service.Filterable
instead. 23affacc
finagle-thrift: c.t.f.thrift.ThriftServiceIface
is removed, use
c.t.f.thrift.service.ThriftServicePerEndpoint
instead. 23affacc
finagle-thriftmux: Removed deprecated APIs located in ThriftMux.scala:
finagle-thriftmux: ThriftMux.Client.pushMuxer
is removed. Use ThriftMux.Client.standardMuxer
instead. 90333b1a
finagle-thriftmux: ThriftMux.serverMuxer
is removed. Use ThriftMux.Server.defaultMuxer
instead. 90333b1a
finagle-base-http: Removed the c.t.f.http.Statuses
java helper, which was deprecated two years
ago in favor of using c.t.f.http.Status
directly. 75a4a209
finagle-base-http: Removed the c.t.f.http.Versions
java helper, which was deprecated two years
ago in favor of using c.t.f.http.Version
directly. f191f1db
finagle-base-http: Removed the c.t.f.http.Methods
java helper, which was deprecated two years
ago in favor of using c.t.f.http.Method
directly. ccf10dbc
finagle-http: c.t.f.http.Response.Ok
was removed. Use just Response()
or Response.Proxy
if you need to mock it. d93bb1c9
finagle-core: Drv.Aliased
and Drv.newVose
are now private, please
construct a Drv
instance using Drv.apply
or Drv.fromWeights
.
9c810dd3
finagle-core: c.t.f.BackupRequestLost
is now removed. Please use c.t.f.Failure.ignorable
instead. 02d3d524
finagle-http: Fix for a bug where HTTP/2 clients could retry requests that had a chunked body even if the request body was consumed. b031e757
finagle-http: Fix for a bug where HTTP clients could assume connections are reusable, despite having streaming requests in flight. 88a2d0ba
finagle-core: Faster Filters
. Removes unnecessary Service.rescue
proxies from
the intermediate andThen
-ed Filters
. Previously in rare cases you might have seen
a raw Exception
not wrapped in a Future
if the Filter
threw. These will now
consistently be lifted into a Future.exception
. a2ddc727
finagle-core: MethodBuilder metrics filtering updated to now report rolled-up logical failures. 6e3bf33f
finagle-http: Disabling Netty3 cookies in favor of Netty4 cookies. fccd92c6
finagle-http: Removed the debug metrics http/cookie/dropped_samesites
and
http/cookie/flagless_samesites
. 2de928ce
finagle-core: Multi-param legacy tls
methods have been deprecated in
c.t.f.param.ServerTransportParams
and c.t.f.builder.ServerBuilder
. Users should migrate
to using the tls(SslServerConfiguration)
method instead. fbfc6d1a
finagle-core: $client.withSession.maxIdleTime
is now deprecated; use
$client.withSessionPool.ttl
instead to set the maximum allowed duration a connection may be
cached for. 0f060e37
finagle-serversets: c.t.f.zookeeper.ZkResolver
has been deprecated in favor
of c.t.f.serverset2.Zk2Resolver
. 9878a9ec
finatra-kafka: Expose timeout duration in FinagleKafkaConsumerBuilder dest(). abd68ddf
finatra-kafka-streams: Expose all existing RocksDb configurations. See
c.t.f.k.config.FinatraRocksDBConfig
for details on flag names,
descriptions and default values. 1454867c
finatra-kafka-streams: Added two RocksDB flags related to block cache tuning,
cache_index_and_filter_blocks
and pin_l0_filter_and_index_blocks_in_cache
.
3b0931e3
finatra-kafka: Adding an implicit implementation of
c.t.app.Flaggable[c.t.finatra.kafka.domain.SeekStrategy]
and c.t.app.Flaggable[org.apache.kafka.clients.consumer.OffsetResetStrategy]
.
ef071e54
finatra-http: Added support to serve c.t.io.Reader
as a streaming response in
c.t.finatra.http.internal.marshalling.CallbackConverter
. e5bda446
finatra-kafka: Expose endOffsets() in FinagleKafkaConsumer. bcbb5774
finatra-kafka-streams: Adding missing ScalaDocs. Adding metric for elapsed state
restore time. RocksDB configuration now contains a flag for adjusting the number
of cache shard bits, rocksdb.block.cache.shard.bits
. afd9a17c
finatra-jackson: Added @Pattern annotation to support finatra/jackson for regex pattern validation on string values. 862f0ab1
finatra-kafka-streams: Refactor package names. All classes moved from com.twitter.finatra.streams to com.twitter.finatra.kafkastreams. a2ad0ef3
finatra-kafka-streams: Delete deprecated and unused classes. ee948398
finatra-kafka-streams: c.t.finatra.streams.transformer.domain.Time
is now the canonical
representation of time for watermarks and timers. RichLong
implicit from
com.twitter.finatra.streams.converters.time
has been renamed to RichFinatraKafkaStreamsLong
.
093b31b8
finatra-jackson: Fix CaseClassField
annotation reflection for Scala 2.12. 3747c1ab
finatra-kafka-streams: Combine FinatraTransformer with FinatraTransformerV2. cd455c43
finatra-thrift: The return type of ReqRepDarkTrafficFilterModule#newFilter
has been changed from
DarkTrafficFilter[MethodIface]
to Filter.TypeAgnostic
. 50184f1b
finatra-kafka: Add lookupBootstrapServers function that takes timeout as a parameter. e3426fb9
finatra-thrift: If a Controller is not configured with exactly one endpoint per method, it will throw an AssertionError instead of logging an error message. An attempt to use non-legacy functionality with a legacy Controller will throw an AssertionError. d1d6d1e0
finatra-kafka: Add flags for controlling rocksdb internal LOG file growth.
rocksdb.log.info.level
Allows the setting of rocks log levels
DEBUG_LEVEL
, INFO_LEVEL
, WARN_LEVEL
, ERROR_LEVEL
, FATAL_LEVEL
,
HEADER_LEVEL
.rocksdb.log.max.file.size
The maximal size of the info log file.rocksdb.log.keep.file.num
Maximal info log files to be kept.
c03a497cfinatra-kafka: Add admin routes for properties and topology information
/admin/kafka/streams/properties
Dumps the
KafkaStreamsTwitterServer#properties
as plain text in the TwitterServer
admin page./admin/kafka/streams/topology
Dumps the
KafkaStreamsTwitterServer#topology
as plain text in the TwitterServer
admin page.
ecf2e54finject-server: EmbeddedTwitterServer that fails to start will now continue to throw the startup failure on calls to methods that require a successfully started server. 3ca4437c
finatra-kafka-streams: FinatraTopologyTester
did not set
TopologyTestDriver#initialWallClockTimeMs
on initialization causing diverging wall clock time
when TopologyTestDriver#advanceWallClockTime
advanced time. The divergence was between
system time set by org.joda.time.DateTimeUtils.setCurrentMillisFixed
and internal mock timer
TopologyTestDriver#mockWallClockTime
. FinatraTopologyTester.inMemoryStatsReceiver
is reset on
TopologyFeatureTest#beforeEach
for all test that extend TopologyFeatureTest
.
3b93a7d7
finatra-kafka-streams: Improve watermark assignment/propagation upon reading the first message and when caching key value stores are used. 9aa12b8d
finatra-jackson: Support inherited annotations in case class deserialization. Case class deserialization support does not properly find inherited Jackson annotations. This means that code like this:
trait MyTrait {
@JsonProperty("differentName")
def name: String
}
case class MyCaseClass(name: String) extends MyTrait
would not properly expect an incoming field with name differentName
to parse into the
case class name
field. This commit provides support for capturing inherited annotations
on case class fields. Annotations processed in order, thus if the same annotation appears
in the class hierarchy multiple times, the value configured on the class will win otherwise
will be in the order of trait linearization with the “last” declaration prevailing.
6237ff86
javax.servlet
ServletAPI dependency.
The fixes #478. 85100952No Changes
No Changes
util-core: updated Reader#fromFuture
to resolve its onClose
when reading of end-of-stream.
f2a05474
util-core: Added Reader.flatten
to flatten a Reader[Reader[_]]
to Reader[_]
,
and Reader.fromSeq
to create a new Reader from a Seq. a49bab4d
util-core: Added Duration.fromMinutes
to return a Duration
from a given number of minutes.
eda0b390
util-core: If given a Timer
upon construction, c.t.io.Pipe
will respect the close
deadline and wait the given amount of time for any pending writes to be read. 0a142872
util-core: Optimized ConstFuture.proxyTo
which brings the performance of
flatMap
and transform
of a ConstFuture
in line with map
. de4cebda
util-core: Experimental toggle (com.twitter.util.BypassScheduler) for speeding up
ConstFuture.map
(transformTry
). The mechanism, when turned on, runs map operations
immediately (why not when we have a concrete value), instead of via the Scheduler, where it may
be queued and potentially reordered, e.g.:
f.flatMap { _ => println(1); g.map { _ => println(2) }; println(3) }
will print 1 2 3
,
where it would have printed 1 3 2
. aeafba1a
util-security: Pkcs8KeyManagerFactory
now supports a certificates file which contains multiple
certificates that are part of the same certificate chain. 337e270f
c.t.io.Reader
where Reader#flatMap
fails to propagate
parent reader’s onClose
. f2a05474util-core: Closing a c.t.io.Pipe
will notify onClose
when the deadline has passed whereas
before the pipe would wait indefinitely for a read before transitioning to the Closed state.
0a142872
util-core: Don’t allow AsyncSemaphore
Permit
s to be released multiple times. Before it was
possible to release a permit more than once and incorrectly remove waiters from the queue.
With this change, the release
permit operation is idempotent. ea24c951
util-core: Remove c.t.u.CountDownLatch
which is an extremely thin shim around
j.u.c.CountDownLatch
that provides pretty limited value. To migrate to j.u.c.CountDownLatch
,
instead of c.t.u.CountDownLatch#await(Duration)
, please use
j.u.c.CountDownLatch#await(int, TimeUnit)
, and instead of
c.t.u.CountDownLatch#within(Duration)
, please throw an exception yourself after awaiting.
b9914f15
util-core: Deprecated conversions in c.t.conversions
have new implementations
that follow a naming scheme of SomethingOps
. df397f53
percent
is now PercentOps
storage
is now StorageUnitOps
string
is now StringOps
thread
is now ThreadOps
time
is now DurationOps
u64
is now U64Ops
util-collection: Delete util-collection. We deleted GenerationalQueue
, MapToSetAdapter
, and
ImmutableLRU
, because we found that they were of little utility. We deleted LruMap
because it
was a very thin shim around a j.u.LinkedHashMap
, where you override removeEldestEntry
. If you
need SynchronizedLruMap
, you can wrap your LinkedHashMap
with
j.u.Collection.synchronizedMap
. We moved RecordSchema
into finagle-base-http because it was
basically only used for HTTP messages, so its new package name is c.t.f.http.collection
.
60eff0a4
util-core: Rename BlacklistStatsReceiver
to DenylistStatsReceiver
. ed3f7069
util-core: Buf.Composite
is now private. Program against more generic, Buf
interface instead.
41e24395


WORK EXPERIENCE
Project Manager
Palm Spring Gaming (GoBet231)
Monrovia, Liberia
11/2017 - 02/2019
Achievements/Tasks
-
Conducted a feasibility study to open a "Sports Betting" company in Liberia (initiated a full research on sports betting, assessed the market in Liberia, assessed the available telecom technology in the country, conducted all the financial projections, and inquired about all the legal requirement needed).
-
Prepared a business plan which consisted of a business model tailored for Liberia.
-
Negotiated deals with European companies to supply the software and the terminals (Novomatic and Playtech BGT). Also negotiated a deal with Orange Liberia to diffuse our link in their servers to provide national coverage.
-
Located brick and mortar stores & negotiated leasing terms, outsourced the graphical design of the logo & signboards from Spain, secured an extension of the casino license to operate in Sports Betting, and collaborated with training company specialized in gaming from Nigeria to conduct training for the staff.
-
Supporting remotely the operations from Lebanon as part of the closure phase.
Product Manager | Project Manager
Palm Spring Resort
Monrovia, Liberia
11/2017 - 08/2018
Achievements/Tasks
-
Planned and implemented a project of restructuring the management departments of the resort.
-
Gathered and analyzed information from Internal/External stakeholders.
-
dentified an opportunity to leverage technology within the business by creating a digital product that connected all the management departments together in one software, and I managed this project using Agile Project Management methodology This project increased efficiency in the company by around 35% and reduced fixed expenses by 8%.
-
The above task included planning the product strategy, outsourcing the design and the technical part which was the platform architecture and coding, and supervising the shipment and implementation of this product.
-
Communicated and trained the internal stakeholders on the new digital management product, and initiated workshops to help employees adapt to the change and better understand their new roles.
-
Identified an opportunity to increase sales by creating a new facility in the resort. I proposed the idea to the BOD, got the approval, and completed this project which increased sales in 6 month by 23% compared to previous year.
Branch Manager in charge
Zaatar w Zeit (Restaurant Chain)
Beirut, Lebanon
04/2013 - 10/2016
Achievements/Tasks
-
Delivered and maximized customer satisfaction, maintained ISO 22000 FSMS practices, responded to guest’s complaints, and managed employees’ schedules, training, inductions and appraisals. Also forecast and prepared annual budgets, and analyzed variances.
EDUCATION
Bachelor of Science in Business Management
American University of Science & Technology
Beirut, Lebanon
10/2012 - 06/2017


@Sir Seven renamed NOTARI_TXID_HEIGHT to NOTARI_TX_ID_HEIGHT in language json
jl777c26-Aug-19 07:38 PM
i dont understand
why is it changed?
NOTARY_TXID_HEIGHT might make a bit more sense, but like i wrote above, there is no need to do this.
@blackjok3r it seems much better, but the bandwidth usage is probably a bit too high. also, it doesnt update the "In Sync" column on the peers page, i was thinking that would be for validated height for a node
blackjok3r26-Aug-19 07:42 PM
@jl777c will fix tomorrow. Yes bandwidth can be reduced further... just trying to work out the best way to do it still. Liekly what I have will work with some diffrent numbers.
what is the status of an android-based nSPV wallet?
blackjok3r26-Aug-19 11:01 PM
works
@CMaurice
CMaurice26-Aug-19 11:09 PM
Yep, jl777 branch is bleeding edge, has some functionality I'm not sure of the dev stage cf. Desktop, but logging in with wif fine, assume send and receive the same. Dev branch iirc is near stable and was working fine last I tried
Regnar27-Aug-19 01:11 AM
Added some prices, 24 hour changes, and balance calculations
the pywallet app is officially 500 lines of code...
1
5
jl777c27-Aug-19 08:09 AM
@Sir Seven can you make a set of screenshots for translators, so they can see the GUI pages and the context of what needs to be translated
and maybe this can become a graphical documentation of the html wallet
1
Mihailo27-Aug-19 10:04 AM
@jl777c@siu - Chainmakers@gcharang@dukeleto Hey guys, would you be kind to summarize what stuff needs to be fixed or refactored for CC in nSPV mode so I don't have to look too much in history of the channel?
jl777c27-Aug-19 10:13 AM
everything
there is no CC support at all right now
there is libcryptoconditions linked in and ready to be used
libnspv does normal transactions
dukeleto27-Aug-19 11:01 AM
see above
siu - Chainmakers27-Aug-19 11:04 AM
@Mihailo i would recommend starting with integrating dice cc calls
Since it would help on getting light dice games dapps
Mihailo27-Aug-19 11:07 AM
Ah ok, I meant as you mentioned me on several things last two weeks just to have them on one place. Never mind, I'm on some CCnSPV stuff that I started and will check every CC (one by one) if it works and what needs to be done
siu - Chainmakers27-Aug-19 11:11 AM
I tried a couple of calls a week or so ago but nothing really worked
Some got stuck, others responded empty output
Mihailo27-Aug-19 11:13 AM
I first fixed the CC calls on CCs I worked on as I know them the best. So you could try channels,gateways,oracles...
They should be working, except the [cc]list rpc as I'm working on that now.
siu - Chainmakers27-Aug-19 11:14 AM
Oh ok, will give it a try then
Sir Seven27-Aug-19 12:10 PM
@jl777c Finishing Russian translation atm. Will make screenshots after PR.
I had to use valgrind on it... Wasnt a simple process... Bit seems to now be ok. Ive been sitting here just fetching txproofs for ages now and its not crashing. Still need to reduce bandwidth a bit more, but crash was more imporant.(edited)
dukeleto27-Aug-19 03:40 PM
@blackjok3r elite points for valgrind usage
blackjok3r27-Aug-19 03:41 PM
its easy a pie on nSPV
there are no mem leaks
or there is no longer any
dukeleto27-Aug-19 03:41 PM
best time to run valgrind is on new codebases
blackjok3r27-Aug-19 03:41 PM
There were a bunch of calloc that were not setting enough buffer...
so it over ran and corruped the heap.
dukeleto27-Aug-19 03:43 PM
this is why Rust exists
blackjok3r27-Aug-19 03:46 PM
yes. I guess so... but nSPV is in C... so have to use what got
denio28-Aug-19 04:20 AM
i did a pull request for german.json ,if you need this
1
jl777c28-Aug-19 08:10 AM
thanks! its merged. you can test it by launching ./nspv -l=german
also on the account page, it is in the dropdown for languages, but need the german word for the german language
denio28-Aug-19 08:12 AM
german word for the german language is "Deutsch"(edited)
jl777c28-Aug-19 08:15 AM
fixed!
what is your KMD address, i will send a bounty
denio28-Aug-19 08:17 AM
RBXmQGHj51iYe7C3PaeJh3MTSvByn6u7g1 But a better bounty is: Sign-up for the Hush csgo Tournament
jl777c28-Aug-19 08:19 AM
sent
denio28-Aug-19 08:19 AM
wow....ty @jl777c !
1
Mihailo28-Aug-19 11:08 AM
@jl777c Why do nSPV node need sometime before it start working? Even normal nodes need some time before they relay transactions to each other. I noticed that like half a year ago it was better - it started relaying txs very soon from start but at some point it got longer. When I start superlite nspv node it needs few minutes before it can receive response from full node.


Before you do ANYTHING, gain consensus with your team!
Develop a Team Working Agreement and enforce it!
What's a Team Working Agreement?
🤖
Let the robots take over!
(they're better at it anyway)
Prettier and ESLint have saved team relationships!
EditorConfig && Roslyn analyzers = 💛
Objectivity Always Wins
What's Objective?
"This change should probably go into our utils library.
It will be re-used quite a bit!"
"I've run this on several browsers and this toast actually pops up
on the top-right but
our ticket specifies bottom-right! Can we fix it so it matches our requirements?"
"I'm having
trouble keeping up with the logic on lines 457-464. Is there a way we can simplify it or make it clearer?"
"This method is
being deprecated in two weeks! I'd suggest replacing it with the authenticateUser method from our authentication library!"
🥰
If you see something you like,
say so!
Subjectivity
Tone of Voice
Process Loopholes
Subjectivity
Tone of Voice
Process Loopholes
From a pull request for the materialize repo
"This implementation is
terrible."
"Didn't we decide
NOT to do this at our last meeting?"
"Why would
you use this when there's
obviously no benefit?"
"Are you really using
lodash, really?"
"This implementation is
terrible."
"Didn't we decide
NOT to do this at our last meeting?"
"Why would
you use this when there's
obviously no benefit?"
"Are you really using
lodash, really?"
...What we can do better?

Suggest with facts
Reject with courtesy
Clarify with an open-mind
Subjectivity
Tone of Voice
Process Loopholes
Subjectivity
Tone of Voice
Process Loopholes
Bias
No Reviews(!)
M.V.E.
Minimum V.E.
Minimum Viable E.
Minimum Viable Effort
...What we can do better?
Establish code review policies
Auto add developers to PRs
Use Code Owners
in GitHub
Enforce the process for EVERYONE
Because even after the PRs are merged, you still have to work with your teammates...


To endorse this letter, please fill out this form (also found at the bottom of this page) with your company or organization's information. This letter is jointly organized by the Electronic Frontier Foundation and Fight For the Future.
Dear Members of Congress,
We write to you as a community representing thousands of our nation's innovators, entrepreneurs, job-creators, and users to express our concern over trade agreements such as the Trans-Pacific Partnership (TPP). Despite containing many provisions that go far beyond the scope of traditional trade policy, the public is kept in the dark as these deals continue to be negotiated behind closed doors with heavy influence from only a limited subset of stakeholders.
The recently-introduced Fast Track bill (the Bipartisan Congressional Trade Priorities and Accountability Act of 2015, “the Bill”) would not remedy the utter lack of transparency of the negotiation process, nor does it include any language to ensure that these deals would contain safeguards to protect our interests in freedom of expression and innovation online. These are just some of our specific concerns we have:
Overall, the Bill would legitimize the secret process that has led to these provisions, while doing nothing to ensure that these agreements would enable lawmakers to work towards striking the right balance between the interests of copyright holders and those of users and innovators. As such, we urge you to come out against the Fast Track bill and call on your colleagues in Congress to do the same.
Sincerely,


25 October 2010 - On 12 October 2010, the Ministry of Health in Pakistan reported laboratory confirmation of 99 cases of Vibrio cholera 01 in the country. These cases were laboratory-confirmed by the National Institute of Health since the beginning of the flood until 30 September 2010. These cases have been reported sporadically from a wide geographical area in the flood-affected provinces of Sindh, Punjab and Khyber Pakhtunkhwa.
The Ministry of Health in Pakistan supported by the World Health Organization and other local and international partners are collaborating closely to prevent outbreaks of any disease, including cholera, and treat people affected by such illnesses. More than 60 diarrhoeal treatment centres are either operating or are soon to start functioning in the 46 most affected districts of the country.
Diarrhoeal diseases including cholera are among the most reported health conditions in many locations affected by the recent floods disaster in the country.


Looks like you made it!
This is a page from the inside (a web server on a private network),
The following sections show:
- Serving Server - Shows server name, indicating location of the actual server
- Local Server Time - Shows if this page is or isnt cached anywhere
- Image from the Internet - Doesn''t really show anything, but it made me happy to see this when the app worked
Serving from Server:
Local Web Server Time:
Image File Linked from the Internet:


Note well the co-ordinates of the rubbish dump. Lit lantern, hand-held, visibility Stygian. Pebbles underfoot. Buck collar snug at the neck. Distant incomprehensible keening. The mighty pyramids of Ancient Egypt. Satyrs cavort in the forest. A galumphing peasant with a pail. The rubbish dump would appear to be not far from the Hanging Gardens of Babylon. Crows fly there, on the hour, timetabled. Clack clack clack, rapid clacks. That kind of timetable. Rain on the pebbles. An orphan choir sings a song.
Bob Crow, Bob Crow
Made out of dough
Eat him up with salt and herring
A biff in the chops from an unknown assailant. Fleeing in the gutter. On All Hallows Eve, pictures of Jap girls in synthesis. The seven wonders of another world. Resurrectionists scurry in the night. Spades at the ready. Bob Crow, Bob Crow.
Sibelius was a terrible drunkard. A dog sniffing a ditch. Frisky terrier, lumbering hound. Two dogs then. The Colossus of Rhodes. Young marble giants. Wind in the rigging. A frump with a towel in a doorway, like Harry Lime in postwar Vienna. Wheels within wheels. The windmills of someone else's mind. Mind how you go, sir. There's room for one more inside.
There's room for one more skip at the rubbish dump. Babylon or Chartres. Sing, sing, in a cathedral choir. Nunc dimittis. And he had received an answer from the Holy Ghost, that he should not see death, before he had seen the Christ of the Lord. Bob Sparrow, Bob Lark.
Rain in the gutters and filth on the stairs. I hear the sound of mandolins. Now the orphans sing.
Bob Crow, Bob Lark, Bob Bobolink
Call for another round of drinks
We are teetering on the brink
Let's fall into the abyss.
Visibility nil, in the abyss. Can I get a witness? Is there honey? Is there tea? No. You have drained your cup. You could not make it up.
A new ghost.


Search
did not yield any results.
Suggestions:
Please ensure you've spelled the movie title correctly
Try another movie
Please enter a movie name in the search bar at the top of the page


BOSSA NOVA (1999) / ** [Portuguese; English subtitles]
Directed by Bruno Barreto. Screenplay by Alexandre Machado and Fernanda Young, based on the story "A Senhorita Simpson" by Sergio Sant'Anna. Starring Amy Irving, Antonio Fagundes, Alexandre Borges. Running time: 95 minutes. Rated AA by the MFCB. Reviewed on November 11th, 2000.
By SHANNON PATRICK SULLIVAN
"Bossa Nova" is a movie so trite, it feels as though it got lost on its way to the Brazilian version of "Must See TV". That it wastes some good performances and touching scenes -- as well as an all-too-rare sensitive depiction of middle-aged romance -- makes the experience all the more exasperating. Although it serves moderately well as a feel-good picture, "Bossa Nova" is ultimately not dissimilar from a night spent carousing in Rio: a dim impression of amusement, fading rapidly from the memory.
Amy Irving, wife of director Bruno Barreto, stars as Mary Ann Simpson, an American teaching English in Rio de Janeiro. She becomes the object of affection of contract lawyer Pedro Paulo (portrayed by prolific Brazilian actor Antonio Fagundes). At the same time, Pedro is defending his father Juan (Alberto de Mendoza) against litigation by his fourth ex-wife, which may mean the loss of Juan's beloved tailor shop. Also employed at the tailor shop is Pedro's half-brother Roberto (Pedro Cardoso), who is smitten with Pedro's pretty new intern Sharon (Giovanna Antonelli).
Meanwhile, amongst Mary Ann's other students are soccer star Acacio (Alexandre Borges), who is developing an unhealthy interest in his teacher while preparing to move to London with his gregarious manager Gordo (Sergio Loroza), and the lonely Nadine (Drica Moraes). Nadine, trying to encourage the solitary Mary Ann to meet someone, introduces her to the world of Internet romance. Nadine herself has been involved in an online relationship with a New York artist named Gary, and is trying to work up the courage to visit him. She is encouraged in this endeavour by her travel agent, Tania (Debora Bloch), recently divorced from none other than Pedro Paulo.
It is true that the existence of so many characters, all so completely intertwined, strains at one's sense of belief. But within the confines of this kind of movie, it is not in of itself an object of criticism -- it is part of the grammar of this type of romantic comedy, which relies on the timeworn gambits of mistaken identity and misunderstood dialogue to garner laughs and propel the storyline. Indeed, "Bossa Nova" becomes even more incestuous as it progresses -- for example, Pedro Paulo and Acacio develop a strange sort of semi-rivalry, which leads to Acacio becoming a client of Pedro's, which results in Acacio getting involved with Sharon, which means that he and Roberto have also become inadvertent rivals.
Other films have utilised similarly unlikely set-ups and mined them for great laughs. But the screenplay for "Bossa Nova", by Alexandre Machado and Fernanda Young, is only fleetingly funny. More often than not, the comedy is the sort reserved for short-lived network sitcoms, such as a painful sequence where Nadine goes to apply for a visa and quickly talks herself into trouble until Tania makes the rescue. And then there's the appearance by Stephen Tobolowsky's geeky Trevor, who inexplicably insists on referring to Pedro Paulo by the groan-inducing Anglicisation "Peter Paul".
When "Bossa Nova" succeeds, it is usually when it concentrates on the central relationship between Mary Ann and Pedro Paulo. Although the plethora of competing subplots prevents this romance from being anything but cursorily explored, it is a touching and effective pairing which makes good use of the skills of both Irving and Fagundes. There is a superb scene, for instance, where Pedro takes Mary Ann's measurements thoroughly, without touching her or otherwise arousing her suspicions, while they ride in an elevator, and then puts his long-dormant tailor skills to use in making her a blouse. But even here the movie undercuts itself: the blouse scene over with, it appears Machado and Young had little idea what else to do with the concept, and quickly skip to the inevitable result of Pedro's secretly sending it to Mary Ann.
There is too much going on in "Bossa Nova", and none of it receives the attention it deserves. A subplot involving Tania and her Chinese lover is almost criminally underexploited, such that it appears to exist only to keep Tania from Pedro for a long period of time.Several characters receive so little development that it is difficult to feel any reaction to the unfolding of their respective story arcs. This is especially true of Sharon, who flip-flops back and forth between Roberto and Acacio seemingly at whim, without any clear motivation (in a cute touch, her backpack changes shape to reflect her current allegiance).
Beyond Irving and Fagundes, only Borges and Loroza stand out. Although neither has much to do individually, they do make for an amusingly arrogant double act. Although she looks very good, Antonelli never finds her groove as Sharon, and feels awkward and out of place; the same can be said of Tobolowsky. Others simply seem to be filling space. Consider Cardoso and Bloch, for example, whose final fates are so offhandedly treated that they come across as mere plot facilitators.
Director Barreto at least keeps the pace of "Bossa Nova" moving, such that only a few scenes seem to go on well past their sell-by date (a fortuitous accomplishment, giving the paucity of much of the humour). But Barreto is also too preoccupied with showing off the beauty of Rio. Right from the opening shots, Barreto allows his depiction of the landscape to become gratuitous. And, ironically, sequences where he could really show off the territory to good effect -- like Mary Ann's daily forays into the ocean -- are so tightly lensed as to be almost claustrophobic.
Also disappointing is the incidental music by Eumir Deodato. Given the movie's title, one could be forgiven for expecting a riveting and attractive bossa nova score. But Deodato's compositions are generally tedious and sleep-inducing, and the music never becomes the crucial ingredient that the filmmakers seem to be trying to set up. Indeed, Deodato's score is perhaps emblematic of "Bossa Nova" as a whole -- not really bad, in fact occasionally alluring, but for the most part simply failing to be at all interesting.
Copyright © 2000 Shannon Patrick Sullivan. Archived at The Popcorn Gallery, http://www.physics.mun.ca/~sps/movies/BossaNova.html
_______________________________________________________________________ / Shannon Patrick Sullivan | "We are all in the gutter, but some of us \ |<EMAIL_ADDRESS>| are looking at the stars." - Oscar Wilde | \___________________________|__________________________________________/ | Popcorn Gallery Movie Reviews www.physics.mun.ca/~sps/movies.html | | Doctor Who: A Brief History of Time (Travel) /drwho.html |
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


It was the month of January, 1516.
The night was dark and tempestuous; the thunder growled around; the lightning flashed at short intervals: and the wind swept furiously along in sudden and fitful gusts.
The streams of the great Black Forest of Germany babbled in playful melody no more, but rushed on with deafening din, mingling their torrent roar with the wild creaking of the huge oaks, the rustling of the firs, the howling of the affrighted wolves, and the hollow voices of the storm.
The dense black clouds were driving restlessly athwart the sky; and when the vivid lightning gleamed forth with rapid and eccentric glare, it seemed as if the dark jaws of some hideous monster, floating high above, opened to vomit flame.
And as the abrupt but furious gusts of wind swept through the forest, they raised strange echoes—as if the impervious mazes of that mighty wood were the abode of hideous fiends and evil spirits, who responded in shrieks, moans, and lamentations to the fearful din of the tempest.
It was, indeed, an appalling night!
An old—old man sat in his cottage on the verge of the Black Forest.
He had numbered ninety years; his head was completely bald—his mouth was toothless—his long beard was white as snow, and his limbs were feeble and trembling.
from Wagner, The Wehr-Wolf by George W M Reynolds


This browser does not support the CSS 3D transforms needed to display this demo. You will need Safari to view it.


Archived ads
| Photo | Adds Details | Price | Option | |
|---|---|---|---|---|
$199 |
||||
Google drops price of Nexus 4 smartphone Posted On : 02-Oct-2014, 04:38 PM Visitors : 221 Located In: New York |
$464 |
|||
Google drops Nexus 4 by $100, offers 15 day price protection refund Posted On : 02-Oct-2014, 04:38 PM Visitors : 221 Located In: New York |
$100 |
|||
$199 |
||||
$150 |


(Click me to open)
Here is your very own digital copy of OverwatchJGJC8P-4CXP-FEG67C-FNV2-BEPDTZ
JGJC8P-4CXP-FEG67C-FNV2-BEPDTZ


Qualification
Specialisation
General Surgeon
Cardiologist
Neurologist
Orthopedic
Dermatologist
Gender
Male
Female
Other
Current Workspace


Full Stack Web Developer living in San Jose, CA.
After graduating from San Jose State University with a bachelor's in Kinesiology, I felt that I was not on the path that would lead me to working in a career that I was truly passionate about. After spending some time doing some soul-searching, I became drawn to the idea of learning to become a software engineer. Thus, began my journey of learning to code. Where, after some introductory self study, I enrolled in an immersive, full-time web development bootcamp at Coding Dojo in San Jose, California. I quickly learned that the challenge of learning the ever evolving technologies of software development, combined with the rewarding sense of satisfaction that comes from using your creativity to develop products for the world we live in, was something I was truly passionate about and could see myself making a career out of for years to come. When I am not developing, I love to nurture my creative side by dancing and teaching dance.
TechnologiesFeel free to contact me for any opportunities!


Severity
Issue
Description
Element
Pos
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.

Game Of Life

NOTICE
WCAG2AAA.Principle1.Guideline1_3.1_3_1.LayoutTable
This table appears to be a layout table. If it is meant to instead be a data table, ensure header cells are identified using th elements.

WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
<button type="submit" class="btn btn-success" [disabled]="this.gameOflife.currentState==1" (click)="StartClick()">start</button>
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<button type="submit" class="btn btn-success" [disabled]="this.gameOflife.currentState==1" (click)="StartClick()">start</button>
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
<button type="submit" class="btn btn-success" [disabled]="this.gameOflife.currentState==0" (click)="Stopclick()">Stop</button>
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<button type="submit" class="btn btn-success" [disabled]="this.gameOflife.currentState==0" (click)="Stopclick()">Stop</button>
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
<button type="submit" class="btn btn-success" (click)="selectPattern()">Select Pattern</button>
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<button type="submit" class="btn btn-success" (click)="selectPattern()">Select Pattern</button>
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
<button type="submit" class="btn btn-success" (click)="StartSelectedPattern()">Start With Selected Pattern</button>
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<button type="submit" class="btn btn-success" (click)="StartSelectedPattern()">Start With Selected Pattern</button>
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.

Select other Pattern

WARNING
WCAG2AAA.Principle1.Guideline1_3.1_3_1.H71.SameName
If these radio buttons or check boxes require a further group-level description, they should be contained within a fieldset element.
<form id="loadpatter" name="loadpatter" #frmloadpatter="ngForm" novalidate="">

 <input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
MyShape
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns"> random

<button type="submit" class="btn btn-success" (click)="LoadPattern()">Load Pattern</button>

</form>
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_1.G83,G84,G85
If an input error is automatically detected in this form, check that the item(s) in error are identified and the error(s) are described to the user in text.
<form id="loadpatter" name="loadpatter" #frmloadpatter="ngForm" novalidate="">

 <input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
MyShape
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns"> random

<button type="submit" class="btn btn-success" (click)="LoadPattern()">Load Pattern</button>

</form>
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_2.G131,G89,G184,H90
Check that descriptive labels or instructions (including for required fields) are provided for user input in this form.
<form id="loadpatter" name="loadpatter" #frmloadpatter="ngForm" novalidate="">

 <input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
MyShape
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns"> random

<button type="submit" class="btn btn-success" (click)="LoadPattern()">Load Pattern</button>

</form>
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_3.G177
Check that this form provides suggested corrections to errors in user input, unless it would jeopardize the security or purpose of the content.
<form id="loadpatter" name="loadpatter" #frmloadpatter="ngForm" novalidate="">

 <input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
MyShape
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns"> random

<button type="submit" class="btn btn-success" (click)="LoadPattern()">Load Pattern</button>

</form>
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_5.G71,G184,G193
Check that context-sensitive help is available for this form, at a Web-page and/or control level.
<form id="loadpatter" name="loadpatter" #frmloadpatter="ngForm" novalidate="">

 <input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
MyShape
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns"> random

<button type="submit" class="btn btn-success" (click)="LoadPattern()">Load Pattern</button>

</form>
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_6.G98,G99,G155,G164,G168.AllForms
Check that submissions to this form are either reversible, checked for input errors, and/or confirmed by the user.
<form id="loadpatter" name="loadpatter" #frmloadpatter="ngForm" novalidate="">

 <input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
MyShape
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns"> random

<button type="submit" class="btn btn-success" (click)="LoadPattern()">Load Pattern</button>

</form>
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.

 <input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
MyShape
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns"> random

ERROR
WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.InputRadio.Name
This radio input element does not have a name available to an accessibility API. Valid names are: label element, title attribute, aria-label attribute, aria-labelledby attribute.
<input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
ERROR
WCAG2AAA.Principle1.Guideline1_3.1_3_1.F68
This form field should be labelled in some way. Use the label element (either with a "for" attribute or wrapped around the form field), or "title", "aria-label" or "aria-labelledby" attributes as appropriate.
<input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<input type="radio" name="options" [value]="false" value="0" [(ngmodel)]="gameOflife.patterns">
ERROR
WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.InputRadio.Name
This radio input element does not have a name available to an accessibility API. Valid names are: label element, title attribute, aria-label attribute, aria-labelledby attribute.
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns">
ERROR
WCAG2AAA.Principle1.Guideline1_3.1_3_1.F68
This form field should be labelled in some way. Use the label element (either with a "for" attribute or wrapped around the form field), or "title", "aria-label" or "aria-labelledby" attributes as appropriate.
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns">
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<input type="radio" name="options" [value]="true" [(ngmodel)]="gameOflife.patterns">
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
<button type="submit" class="btn btn-success" (click)="LoadPattern()">Load Pattern</button>
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<button type="submit" class="btn btn-success" (click)="LoadPattern()">Load Pattern</button>
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.

Game Of Life

NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_1.G83,G84,G85
If an input error is automatically detected in this form, check that the item(s) in error are identified and the error(s) are described to the user in text.
<form id="gameOflife" name="gameOflife" #frmgameoflife="ngForm" novalidate="">

 Number of Rows
<input type="text" class="form-control" id="totalrows" [ngmodeloptions]="{standalone: true}" #totalrows="ngModel" (keypress)="numberOnly($event)" [(ngmodel)]="gameOflife.rows" required="">

Number of Rows is required

Number of Columns
<input type="text" class="form-control" #totalolumns="ngModel" id="totalolumns" (keypress)="numberOnly($event)" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.columns" required="">

Number of Columns is required

Step Interval
<input type="text" #delaybetweenframes="ngModel" class="form-control" (keypress)="numberOnly($event)" id="delayBetweenFrames" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.newdelayBetweenFrames" required="">

Step Interval is required

<button type="submit" class="btn btn-success" [disabled]="delayBetweenFrames.errors?.required
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_2.G131,G89,G184,H90
Check that descriptive labels or instructions (including for required fields) are provided for user input in this form.
<form id="gameOflife" name="gameOflife" #frmgameoflife="ngForm" novalidate="">

 Number of Rows
<input type="text" class="form-control" id="totalrows" [ngmodeloptions]="{standalone: true}" #totalrows="ngModel" (keypress)="numberOnly($event)" [(ngmodel)]="gameOflife.rows" required="">

Number of Rows is required

Number of Columns
<input type="text" class="form-control" #totalolumns="ngModel" id="totalolumns" (keypress)="numberOnly($event)" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.columns" required="">

Number of Columns is required

Step Interval
<input type="text" #delaybetweenframes="ngModel" class="form-control" (keypress)="numberOnly($event)" id="delayBetweenFrames" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.newdelayBetweenFrames" required="">

Step Interval is required

<button type="submit" class="btn btn-success" [disabled]="delayBetweenFrames.errors?.required
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_3.G177
Check that this form provides suggested corrections to errors in user input, unless it would jeopardize the security or purpose of the content.
<form id="gameOflife" name="gameOflife" #frmgameoflife="ngForm" novalidate="">

 Number of Rows
<input type="text" class="form-control" id="totalrows" [ngmodeloptions]="{standalone: true}" #totalrows="ngModel" (keypress)="numberOnly($event)" [(ngmodel)]="gameOflife.rows" required="">

Number of Rows is required

Number of Columns
<input type="text" class="form-control" #totalolumns="ngModel" id="totalolumns" (keypress)="numberOnly($event)" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.columns" required="">

Number of Columns is required

Step Interval
<input type="text" #delaybetweenframes="ngModel" class="form-control" (keypress)="numberOnly($event)" id="delayBetweenFrames" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.newdelayBetweenFrames" required="">

Step Interval is required

<button type="submit" class="btn btn-success" [disabled]="delayBetweenFrames.errors?.required
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_5.G71,G184,G193
Check that context-sensitive help is available for this form, at a Web-page and/or control level.
<form id="gameOflife" name="gameOflife" #frmgameoflife="ngForm" novalidate="">

 Number of Rows
<input type="text" class="form-control" id="totalrows" [ngmodeloptions]="{standalone: true}" #totalrows="ngModel" (keypress)="numberOnly($event)" [(ngmodel)]="gameOflife.rows" required="">

Number of Rows is required

Number of Columns
<input type="text" class="form-control" #totalolumns="ngModel" id="totalolumns" (keypress)="numberOnly($event)" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.columns" required="">

Number of Columns is required

Step Interval
<input type="text" #delaybetweenframes="ngModel" class="form-control" (keypress)="numberOnly($event)" id="delayBetweenFrames" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.newdelayBetweenFrames" required="">

Step Interval is required

<button type="submit" class="btn btn-success" [disabled]="delayBetweenFrames.errors?.required
NOTICE
WCAG2AAA.Principle3.Guideline3_3.3_3_6.G98,G99,G155,G164,G168.AllForms
Check that submissions to this form are either reversible, checked for input errors, and/or confirmed by the user.
<form id="gameOflife" name="gameOflife" #frmgameoflife="ngForm" novalidate="">

 Number of Rows
<input type="text" class="form-control" id="totalrows" [ngmodeloptions]="{standalone: true}" #totalrows="ngModel" (keypress)="numberOnly($event)" [(ngmodel)]="gameOflife.rows" required="">

Number of Rows is required

Number of Columns
<input type="text" class="form-control" #totalolumns="ngModel" id="totalolumns" (keypress)="numberOnly($event)" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.columns" required="">

Number of Columns is required

Step Interval
<input type="text" #delaybetweenframes="ngModel" class="form-control" (keypress)="numberOnly($event)" id="delayBetweenFrames" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.newdelayBetweenFrames" required="">

Step Interval is required

<button type="submit" class="btn btn-success" [disabled]="delayBetweenFrames.errors?.required
WARNING
WCAG2AAA.Principle1.Guideline1_3.1_3_1.H44.NonExistentFragment
This label's "for" attribute contains an ID that does not exist in the document fragment.
 Number of Rows
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
 Number of Rows
ERROR
WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.InputText.Name
This text input element does not have a name available to an accessibility API. Valid names are: label element, title attribute, aria-label attribute, aria-labelledby attribute.
<input type="text" class="form-control" id="totalrows" [ngmodeloptions]="{standalone: true}" #totalrows="ngModel" (keypress)="numberOnly($event)" [(ngmodel)]="gameOflife.rows" required="">
ERROR
WCAG2AAA.Principle1.Guideline1_3.1_3_1.F68
This form field should be labelled in some way. Use the label element (either with a "for" attribute or wrapped around the form field), or "title", "aria-label" or "aria-labelledby" attributes as appropriate.
<input type="text" class="form-control" id="totalrows" [ngmodeloptions]="{standalone: true}" #totalrows="ngModel" (keypress)="numberOnly($event)" [(ngmodel)]="gameOflife.rows" required="">
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<input type="text" class="form-control" id="totalrows" [ngmodeloptions]="{standalone: true}" #totalrows="ngModel" (keypress)="numberOnly($event)" [(ngmodel)]="gameOflife.rows" required="">
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.

Number of Rows is required

WARNING
WCAG2AAA.Principle1.Guideline1_3.1_3_1.H44.NonExistentFragment
This label's "for" attribute contains an ID that does not exist in the document fragment.
Number of Columns
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
Number of Columns
ERROR
WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.InputText.Name
This text input element does not have a name available to an accessibility API. Valid names are: label element, title attribute, aria-label attribute, aria-labelledby attribute.
<input type="text" class="form-control" #totalolumns="ngModel" id="totalolumns" (keypress)="numberOnly($event)" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.columns" required="">
ERROR
WCAG2AAA.Principle1.Guideline1_3.1_3_1.F68
This form field should be labelled in some way. Use the label element (either with a "for" attribute or wrapped around the form field), or "title", "aria-label" or "aria-labelledby" attributes as appropriate.
<input type="text" class="form-control" #totalolumns="ngModel" id="totalolumns" (keypress)="numberOnly($event)" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.columns" required="">
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<input type="text" class="form-control" #totalolumns="ngModel" id="totalolumns" (keypress)="numberOnly($event)" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.columns" required="">
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.

Number of Columns is required

WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
Step Interval
ERROR
WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.InputText.Name
This text input element does not have a name available to an accessibility API. Valid names are: label element, title attribute, aria-label attribute, aria-labelledby attribute.
<input type="text" #delaybetweenframes="ngModel" class="form-control" (keypress)="numberOnly($event)" id="delayBetweenFrames" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.newdelayBetweenFrames" required="">
ERROR
WCAG2AAA.Principle1.Guideline1_3.1_3_1.F68
This form field should be labelled in some way. Use the label element (either with a "for" attribute or wrapped around the form field), or "title", "aria-label" or "aria-labelledby" attributes as appropriate.
<input type="text" #delaybetweenframes="ngModel" class="form-control" (keypress)="numberOnly($event)" id="delayBetweenFrames" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.newdelayBetweenFrames" required="">
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<input type="text" #delaybetweenframes="ngModel" class="form-control" (keypress)="numberOnly($event)" id="delayBetweenFrames" [ngmodeloptions]="{standalone: true}" [(ngmodel)]="gameOflife.newdelayBetweenFrames" required="">
WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.

Step Interval is required

WARNING
WCAG2AAA.Principle1.Guideline1_4.1_4_6.G17.BgImage
This element's text is placed on a background image. Ensure the contrast ratio between the text and all covered parts of the image are at least 7:1.
<button type="submit" class="btn btn-success" [disabled]="delayBetweenFrames.errors?.required
NOTICE
WCAG2AAA.Principle3.Guideline3_2.3_2_1.G107
Check that a change of context does not occur when this input field receives focus.
<button type="submit" class="btn btn-success" [disabled]="delayBetweenFrames.errors?.required


Josshila 196 - Rohitpur, Keraniganj
2017-12-09
Got up at 5:40am in the morning.
And immediately tried to get some more sleep as I thought I had a little chance to catch up the Josshila group.
But getting more sleep had to wait as it was hurting me to miss the ride what was supposed to be my last BDCyclists Josshila Saturday for 2017.
After getting out with the bike, found out that there was some rain last night.
Usually I don’t have any problem to ride in heavy rains.
I even like to ride in rains if I have proper protection to my belongings.
But I have a serious problem to ride through muds.
From first glance it seemed to me that it’s gonna be a muddy ride.
But this time mud-phobia couldn’t resist me to join this Josshila Saturday.
When I started it was 6:05am.
I rode directly towards Bosilla bridge, which was supposed to be first re-grouping point.
I texted a fellow rider to wait for me at the bridge and started.
Due to strong head-wind and mud-shower from my wheels, it took more than expected time to reach Bosilla.
I reached at 6:28am but found no one to wait for me there.
When I was planning to return home without extending this mud-ridded ride anymore, I found the group to arrive at 6:35am.
They started 15 minutes later than the scheduled time.
Even though it was supposed to be an intermediate level ride(in terms of speed and milage), it turned out to be a beginner level due to the weather.
And we decided not to increase the milage anymore after we ensured that it is going to be 50km at least (prior plan was for a 65+km ride).
We went upto Rohitpur Bridge and returned.
When coming back we took a detour through Sohana Hotel at Keraniganj to have breakfast with their special rice menu.
Special rice menu of Sohana Hotel.


string gzgetss ( resource $zp , int $length [, string $allowable_tags ] )
Identical to gzgets(), except that gzgetss() attempts to strip any HTML and PHP tags from the text it reads.
The uncompressed and striped string, or FALSE on error.


How to Become a Ninja
Learn the Art of Moving Stealthily
Learn the Art of Battle
Learn the Art of Living with Honor
Learn the Art of Battle
Learn the Art of Battle
Learn the Art of Battle
Learn the Art of Battle
Learn the Art of Battle
Learn the Art of Battle


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 4
For the yoghurt kadhi, place the yoghurt, gram flour, water, salt and turmeric into a bowl and whisk to combine, then pass the mixture through fine sieve.
Place the yoghurt mixture into a pan over medium heat and bring to the boil, whisking constantly. Reduce heat and simmer for 5-8 minutes, or until the sauce turns glossy and begins to coat the back of a wooden spoon. Skim the yoghurt kadhi to remove any scum or impurities that may appear on the surface.
Place the ghee into a small pan and heat to smoking point. Add the red chilli, cumin and curry leaves and as they crackle and cook (almost immediately), pour the oil and spices over the yoghurt kadhi. Set aside.
For the mackerel, preheat the grill to its highest setting.
Place all the spices into a pestle and mortar (or a spice grinder) and grind to a coarse mixture.
Sprinkle the spice mixture over both sides of the mackerel fillets.
Mix the oil and lemon juice together, then drizzle over the mackerel fillets.
Place the mackerel fillets onto a tray and place under the grill, skin side-up, and cook for 8-10 minutes, or until the mackerel is just cooked through.
For the spinach poriyal, heat the oil in a frying pan over a medium heat. Add the mustard seeds and curry leaves and fry for 10-15 seconds (they should crackle and pop.
Add the onions and fry for 5-6 minutes over a low heat, or until translucent.
Add the salt and green chilli and stir-fry for one minute.
Add the spinach leaves and stir-fry for 2-3 minutes, until wilted down.
Add the grated coconut and mix well. Cook for one minute then remove from the heat.
To serve, pour or ladle equal amounts of the yoghurt kadhi into serving bowls and place a mackerel fillet on top of each. Place some of the spinach poriyal over each mackerel fillet and serve immediately.


The nasty side of Boris Johnson as he makes throat slitting gesture during interview
The Prime Minister was trying to kill a line of questioning but didn't realise he was being filmed during radio interview
by Cathy Owen, Liam ThorpBoris Johnson was caught on camera appearing to give a secret signal to stop difficult questions during an interview.
The Prime Minister was fielding questions from the public and from radio host Nick Ferrari on the LBC station this morning.
He didn't seem to appear to realised that the interview was being streamed live and at one point he could be seen making a secret sign to the host to stop the interview when the questioning turned to social care.
The Conservatives have been criticised heavily for failing to address the growing crisis in social care in their election manifesto.
And when Mr Johnson was asked to answer about this subject today he gave a waffly answer before making a throat cutting gesture towards Mr Ferrari.
The host appeared to heed the warning by quickly moving on to a different subject following the Prime Minister's gesture.
During the interview the Prime Minister had to defend disparaging remarks he made about single mothers, telling a voter they were made before he was "even in politics".
An article written by the Conservative Party leader for the Spectator magazine in 1995 has been unearthed in which he described the children of single mothers as "ill-raised, ignorant, aggressive and illegitimate".
In the column, the Prime Minister said it was "outrageous" that married couples "should pay for 'the single mothers' desire to procreate independently of men".
During a phone-in on LBC radio on Friday, Mr Johnson was put to task over the comments by a single mother named Ruth from Oldham.
She told the PM she was unhappy about the content of the article and questioned why he was reluctant to talk about his own family.
Mr Johnson said: "Ruth, I want to say to you, I mean absolutely no disrespect to you or anybody.
"These are 25-year-old quotations culled from articles written I think before I was even in politics."
He said the quotes were stripped of context and formed part of a smear campaign by Labour.
"They're just trying to distract from the reality that they have no plan to get out of the EU."
During the call-in, Mr Johnson also:
- Gave a "guarantee" to take Britain out of the European Union by January 31 if he secures a "workable" majority.
- Said the £58 billion compensation for Waspi women promised by Labour was "a lot of money".
- Confirmed he would "walk out" of trade talks with the US if President Donald Trump wanted the NHS to be on the table.
- Told voters he wanted to come back with a "better answer" to the social care funding crisis - but said the politics had to be taken "out of this".
- Refused to discuss how many children he had fathered, telling LBC: "I love my children very much but they're not standing at this election."
- Admitted his new nurses pledge amounted to 31,000 extra nurses in the NHS - not 50,000.
A video of the Prime Minister's gesture is now being shared widely on social media.


...
Username:
Date of Birth:
Followings:
Bio:
Followings
Add Post to Your Profile
Create a post
My Posts
posted by :


This SRFI defines exception-handling and exception-raising constructs for Scheme, including
with-exception-handler
procedure and a guard
form for installing
exception-handling procedures,
raise
procedure for invoking
the current exception handler.
This SRFI is based on (withdrawn) SRFI 12: Exception Handling by William Clinger, R. Kent Dybvig, Matthew Flatt, and Marc Feeley.


Welcome, Xavier Ordoquy<EMAIL_ADDRESS>You are seeing this page because some of the core parameters have not been set up yet.
The goal of this page is to inform you about the last steps required to set up
your installation correctly.
As an administrator, you have access to all administrative pages, accessible from
the Administration link visible at the bottom of this page.
This link will always be visible, on all pages. From there, you must visit at least
the Parameters page, from where you can set all important
parameters for this installation; among others:
- urlbase, which is the URL
pointing to this installation and which will be used in emails (which is also the
reason you see this page: as long as this parameter is not set, you will see this
page again and again).
- cookiepath is important
for your browser to manage your cookies correctly.
- maintainer,
the person responsible for this installation if something is
running wrongly.
Also important are the following parameters:
- requirelogin, if turned
on, will protect your installation from users having no account on this installation.
In other words, users who are not explicitly authenticated with a valid account
cannot see any data. This is what you want if you want to keep your data private.
- createemailregexp
defines which users are allowed to create an account on this installation. If set
to ".*" (the default), everybody is free to create his own account. If set to
<EMAIL_ADDRESS>only users having an account @mycompany.com will be allowed to
create an account. If left blank, users will not be able to create accounts themselves;
only an administrator will be able to create one for them. If you want a private
installation, you must absolutely set this parameter to something different from
the default.
- mail_delivery_method
defines the method used to send emails, such as sendmail or SMTP. You have to set
it correctly to send emails.
After having set up all this, we recommend looking at Bugzilla's other
parameters as well at some time so that you understand what they do and whether you
want to modify their settings for your installation.
{% endblock bugzilla-body %}


The main task of React is to ensure that what can be seen on web pages is displayed on the screen. React facilitates interface creation greatly by breaking each page into small fragments. We call these fragments components.
A React component is, simply put, a piece of code that represents part of a web page. Each component is a JavaScript function that returns a piece of code representing a fragment of a page. Almost everything in React consists of components, which are divided into class components and simple components.
function OurFirstComponent() {
return (
Hello, I am a React Component!
);
}
class App extends Component {
render() {
return (
Hello, React!
)
}
}
Props are an effective way to pass existing data to a React component. The component cannot change the props — they're read-only.
function Welcome(props) {
return Hello, {props.name}
;
}
const element = < Welcome name="Alice" />;
ReactDOM.render(
element,
document.getElementById('root')
);
Result: "Hello, Alice" on the page
State is any data that should be saved and modified without necessarily being added to a database.
class Hello extends React.Component {
constructor(){
super();
this.state = {
message: "my friend (from state)!"
};
this.updateMessage = this.updateMessage.bind(this);
}
updateMessage() {
this.setState({
message: "my friend (from changed state)!"
});
}
render() {
return (
Hello {this.state.message}!
)
}
}
Single responsibility principle


An easy-to-use Timesheet entry system for employees, including the ability to allot hours spent on a project to a particular Grant Award and Grant Award Task/Service Area.
A back-end that makes it easy for managers to set up and maintain standard allocations, monitor employee hours, approve timesheets, etc.
Make a platform that is suited to the State of Rhode Island's needs, but easily adaptable to other states, municipalities, organizations, etc.


This is a simple circular sliderule simulator you can use. Use the mouse wheel while you have your mouse outside of the face to move the hand. Holding shift makes it go slower. Using the wheel inside the face moves the face. Click outside the face to register the inner face to the hand. Click again to register to the origin. Click inside the face to set the origin to the hand. Touch on mobile works as well. The Gauge marks are as follows: π ~ 3.1416 is clear, e ~ 2.71828 as well, c ~ 1.128 marks sqrt(4/pi) the circle constant for finding areas of circles given their diameter. L marks the natural log of 10 ~ 2.3026. r ~ 57.3 is the number of degrees in a radian, and Q ~ 0.01745 is the number of radians in a degree.


{{ define "main" }}
{{ "" | safeHTML }}
{{ $hexagons := resources.Get "css/hexagon.css" | minify }}
{{ "" | safeHTML }}
{{ $index := resources.Get "css/index.css" | minify }}
{{ .Site.Data.homepage.banner.title | safeHTML }}
{{.content | markdownify}}
{{ with .button }} {{.btnText}} {{end}} {{end}}{{.description | safeHTML}}
Click the images below to find out more
Lastest Tutorials, go to the Tutorials Page to see all of them.
Lastest Courses, go to the Learning Page to see all of them.


Appendix¶
Singularity’s environment variables¶
Singularity 3.0 comes with some environment variables you can set or modify depending on your needs. You can see them listed alphabetically below with their respective functionality.
A
¶
SINGULARITY_ADD_CAPS: To specify a list (comma separated string) of capabilities to be added. Default is an empty string.
SINGULARITY_ALL: List all the users and groups capabilities.
SINGULARITY_ALLOW_SETUID: To specify that setuid binaries should or not be allowed in the container. (root only) Default is set to false.
SINGULARITY_APP and SINGULARITY_APPNAME: Sets the name of an application to be run inside a container.
SINGULARITY_APPLY_CGROUPS: Used to apply cgroups from an input file for container processes. (it requires root privileges)
B
¶
SINGULARITY_BINDPATH and SINGULARITY_BIND: Comma separated string
source:<dest>
list of paths to bind between the host and the container.SINGULARITY_BOOT: Set to false by default, considers if executing
/sbin/init
when container boots (root only).SINGULARITY_BUILDER: To specify the remote builder service URL. Defaults to our remote builder.
C
¶
SINGULARITY_CACHEDIR: Specifies the directory for image downloads to be cached in. See Cache Folders.
SINGULARITY_CLEANENV: Specifies if the environment should be cleaned or not before running the container. Default is set to false.
SINGULARITY_CONTAIN: To use minimal
/dev
and empty other directories (e.g./tmp
and$HOME
) instead of sharing filesystems from your host. Default is set to false.SINGULARITY_CONTAINALL: To contain not only file systems, but also PID, IPC, and environment. Default is set to false.
SINGULARITY_CONTAINLIBS: Used to specify a string of file names (comma separated string) to bind to the
/.singularity.d/libs
directory.
D
¶
SINGULARITY_DEFFILE: Shows the Singularity recipe that was used to generate the image.
SINGULARITY_DESC: Contains a description of the capabilities.
SINGULARITY_DETACHED: To submit a build job and print the build ID (no real-time logs and also requires
--remote
). Default is set to false.SINGULARITY_DISABLE_CACHE: To disable all caching of docker/oci, library, oras, etc. downloads and built SIFs. Default is set to false.
SINGULARITY_DNS: A list of the DNS server addresses separated by commas to be added in
resolv.conf
.SINGULARITY_DOCKER_LOGIN: To specify the interactive prompt for docker authentication.
SINGULARITY_DOCKER_USERNAME: To specify a username for docker authentication.
SINGULARITY_DOCKER_PASSWORD: To specify the password for docker authentication.
SINGULARITY_DROP_CAPS: To specify a list (comma separated string) of capabilities to be dropped. Default is an empty string.
E
¶
SINGULARITY_ENVIRONMENT: Contains all the environment variables that have been exported in your container.
SINGULARITY_ENCRYPTION_PASSPHRASE: Used to specify the plaintext passphrase to encrypt the container.
SINGULARITY_ENCRYPTION_PEM_PATH: Used to specify the path of the file containing public or private key to encrypt the container in PEM format.
SINGULARITYENV_*: Allows you to transpose variables into the container at runtime. You can see more in detail how to use this variable in our environment and metadata section.
SINGULARITYENV_APPEND_PATH: Used to append directories to the end of the
$PATH
environment variable. You can see more in detail on how to use this variable in our environment and metadata section.SINGULARITYENV_PATH: A specified path to override the
$PATH
environment variable within the container. You can see more in detail on how to use this variable in our environment and metadata section.SINGULARITYENV_PREPEND_PATH: Used to prepend directories to the beginning of $PATH` environment variable. You can see more in detail on how to use this variable in our environment and metadata section.
F
¶
SINGULARITY_FAKEROOT: Set to false by default, considers running the container in a new user namespace as uid 0 (experimental).
SINGULARITY_FORCE: Forces to kill the instance.
G
¶
SINGULARITY_GROUP: Used to specify a string of capabilities for the given group.
H
¶
SINGULARITY_HELPFILE: Specifies the runscript helpfile, if it exists.
SINGULARITY_HOME : A home directory specification, it could be a source or destination path. The source path is the home directory outside the container and the destination overrides the home directory within the container.
SINGULARITY_HOSTNAME: The container’s hostname.
I
¶
SINGULARITY_IMAGE: Filename of the container.
J
¶
SINGULARITY_JSON: Specifies the structured json of the def file, every node as each section in the def file.
K
¶
SINGULARITY_KEEP_PRIVS: To let root user keep privileges in the container. Default is set to false.
L
¶
SINGULARITY_LABELS: Specifies the labels associated with the image.
SINGULARITY_LIBRARY: Specifies the library to pull from. Default is set to our Cloud Library.
N
¶
SINGULARITY_NAME: Specifies a custom image name.
SINGULARITY_NETWORK: Used to specify a desired network. If more than one parameters is used, addresses should be separated by commas, where each network will bring up a dedicated interface inside the container.
SINGULARITY_NETWORK_ARGS: To specify the network arguments to pass to CNI plugins.
SINGULARITY_NOCLEANUP: To not clean up the bundle after a failed build, this can be helpful for debugging. Default is set to false.
SINGULARITY_NOHTTPS: Sets to either false or true to avoid using HTTPS for communicating with the local docker registry. Default is set to false.
SINGULARITY_NO_HOME: Considers not mounting users home directory if home is not the current working directory. Default is set to false.
SINGULARITY_NO_INIT and SINGULARITY_NOSHIMINIT: Considers not starting the
shim
process with--pid
.SINGULARITY_NO_NV: Flag to disable Nvidia support. Opposite of
SINGULARITY_NV
.SINGULARITY_NO_PRIVS: To drop all the privileges from root user in the container. Default is set to false.
SINGULARITY_NV: To enable experimental Nvidia support. Default is set to false.
O
¶
SINGULARITY_OVERLAY and SINGULARITY_OVERLAYIMAGE: To indicate the use of an overlay file system image for persistent data storage or as read-only layer of container.
P
¶
SINGULARITY_PWD and SINGULARITY_TARGET_PWD: The initial working directory for payload process inside the container.
R
¶
SINGULARITY_REMOTE: To build an image remotely. (Does not require root) Default is set to false.
SINGULARITY_ROOTFS: To reference the system file location.
SINGULARITY_RUNSCRIPT: Specifies the runscript of the image.
S
¶
SINGULARITY_SANDBOX: To specify that the format of the image should be a sandbox. Default is set to false.
SINGULARITY_SCRATCH and SINGULARITY_SCRATCHDIR: Used to include a scratch directory within the container that is linked to a temporary directory. (use -W to force location)
SINGULARITY_SECTION: To specify a comma separated string of all the sections to be run from the deffile (setup, post, files, environment, test, labels, none)
SINGULARITY_SECURITY: Used to enable security features. (SELinux, Apparmor, Seccomp)
SINGULARITY_SECRET: Lists all the private keys instead of the default which display the public ones.
SINGULARITY_SHELL: The path to the program to be used as an interactive shell.
SINGULARITY_SIGNAL: Specifies a signal sent to the instance.
T
¶
SINGULARITY_TEST: Specifies the test script for the image.
SINGULARITY_TMPDIR: Used with the
build
command, to consider a temporary location for the build. See Temporary Folders.
U
¶
SINGULARITY_UNSHARE_PID: To specify that the container will run in a new PID namespace. Default is set to false.
SINGULARITY_UNSHARE_IPC: To specify that the container will run in a new IPC namespace. Default is set to false.
SINGULARITY_UNSHARE_NET: To specify that the container will run in a new network namespace (sets up a bridge network interface by default). Default is set to false.
SINGULARITY_UNSHARE_UTS: To specify that the container will run in a new UTS namespace. Default is set to false.
SINGULARITY_UPDATE: To run the definition over an existing container (skips the header). Default is set to false.
SINGULARITY_URL: Specifies the key server
URL
.SINGULARITY_USER: Used to specify a string of capabilities for the given user.
SINGULARITY_USERNS and SINGULARITY_UNSHARE_USERNS: To specify that the container will run in a new user namespace, allowing Singularity to run completely unprivileged on recent kernels. This may not support every feature of Singularity. (Sandbox image only). Default is set to false.
W
¶
SINGULARITY_WORKDIR: The working directory to be used for
/tmp
,/var/tmp
and$HOME
(if-c
or--contain
was also used)SINGULARITY_WRITABLE: By default, all Singularity containers are available as read only, this option makes the file system accessible as read/write. Default set to false.
SINGULARITY_WRITABLE_TMPFS: Makes the file system accessible as read-write with non-persistent data (with overlay support only). Default is set to false.
Build Modules¶
library
bootstrap agent¶
Overview¶
You can use an existing container on the Container Library as your “base,” and
then add customization. This allows you to build multiple images from the same
starting point. For example, you may want to build several containers with the
same custom python installation, the same custom compiler toolchain, or the same
base MPI installation. Instead of building these from scratch each time, you
could create a base container on the Container Library and then build new
containers from that existing base container adding customizations in %post
,
%environment
, %runscript
, etc.
Keywords¶
Bootstrap: library
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
From: <entity>/<collection>/<container>:<tag>
The From
keyword is mandatory. It specifies the container to use as a base.
entity
is optional and defaults to library
. collection
is
optional and defaults to default
. This is the correct namespace to use for
some official containers (alpine
for example). tag
is also optional and
will default to latest
.
Library: http://custom/library
The Library keyword is optional. It will default to
https://library.sylabs.io
.
Fingerprints: 22045C8C0B1004D058DE4BEDA20C27EE7FF7BA84
The Fingerprints keyword is optional. It specifies one or more comma separated fingerprints corresponding to PGP public keys. If present, the bootstrap image will be verified and the build will only proceed if it is signed by keys matching all of the specified fingerprints.
docker
bootstrap agent¶
Overview¶
Docker images are comprised of layers that are assembled at runtime to create an image. You can use Docker layers to create a base image, and then add your own custom software. For example, you might use Docker’s Ubuntu image layers to create an Ubuntu Singularity container. You could do the same with CentOS, Debian, Arch, Suse, Alpine, BusyBox, etc.
Or maybe you want a container that already has software installed. For instance,
maybe you want to build a container that uses CUDA and cuDNN to leverage the
GPU, but you don’t want to install from scratch. You can start with one of the
nvidia/cuda
containers and install your software on top of that.
Or perhaps you have already invested in Docker and created your own Docker
containers. If so, you can seamlessly convert them to Singularity with the
docker
bootstrap module.
Keywords¶
Bootstrap: docker
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
From: <registry>/<namespace>/<container>:<tag>@<digest>
The From
keyword is mandatory. It specifies the container to use as a base.
registry
is optional and defaults to index.docker.io
. namespace
is
optional and defaults to library
. This is the correct namespace to use for
some official containers (ubuntu for example). tag
is also optional and will
default to latest
See Singularity and Docker for more detailed info on using Docker registries.
Registry: http://custom_registry
The Registry keyword is optional. It will default to index.docker.io
.
Namespace: namespace
The Namespace keyword is optional. It will default to library
.
IncludeCmd: yes
The IncludeCmd keyword is optional. If included, and if a %runscript
is not
specified, a Docker CMD
will take precedence over ENTRYPOINT
and will be
used as a runscript. Note that the IncludeCmd
keyword is considered valid if
it is not empty! This means that IncludeCmd: yes
and IncludeCmd: no
are
identical. In both cases the IncludeCmd
keyword is not empty, so the Docker
CMD
will take precedence over an ENTRYPOINT
.
See Singularity and Docker for more info on order of operations for determining a runscript.
Notes¶
Docker containers are stored as a collection of tarballs called layers. When building from a Docker container the layers must be downloaded and then assembled in the proper order to produce a viable file system. Then the file system must be converted to Singularity Image File (sif) format.
Building from Docker Hub is not considered reproducible because if any of the layers of the image are changed, the container will change. If reproducibility is important to your workflow, consider hosting a base container on the Container Library and building from it instead.
For detailed information about setting your build environment see Build Customization.
shub
bootstrap agent¶
Overview¶
You can use an existing container on Singularity Hub as your “base,” and then
add customization. This allows you to build multiple images from the same
starting point. For example, you may want to build several containers with the
same custom python installation, the same custom compiler toolchain, or the same
base MPI installation. Instead of building these from scratch each time, you
could create a base container on Singularity Hub and then build new containers
from that existing base container adding customizations in %post
,
%environment
, %runscript
, etc.
Keywords¶
Bootstrap: shub
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
From: shub://<registry>/<username>/<container-name>:<tag>@digest
The From
keyword is mandatory. It specifies the container to use as a base.
registry is optional and defaults to ``singularity-hub.org
. tag
and
digest
are also optional. tag
defaults to latest
and digest
can
be left blank if you want the latest build.
Notes¶
When bootstrapping from a Singularity Hub image, all previous definition files
that led to the creation of the current image will be stored in a directory
within the container called /.singularity.d/bootstrap_history
. Singularity
will also alert you if environment variables have been changed between the base
image and the new image during bootstrap.
oras
bootstrap agent¶
Overview¶
Using, this module, a container from supporting OCI Registries - Eg: ACR (Azure Container
Registry), local container registries, etc can be used as your “base” image and later
customized. This allows you to build multiple images from the same starting point. For
example, you may want to build several containers with the same custom python installation,
the same custom compiler toolchain, or the same base MPI installation. Instead of
building these from scratch each time, you could make use of oras
to pull an
appropriate base container and then build new containers by adding customizations in
%post
, %environment
, %runscript
, etc.
Keywords¶
Bootstrap: oras
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
From: oras://registry/namespace/image:tag
The From
keyword is mandatory. It specifies the container to use as a base.
Also,``tag`` is mandatory that refers to the version of image you want to use.
localimage
bootstrap agent¶
This module allows you to build a container from an existing Singularity container on your host system. The name is somewhat misleading because your container can be in either image or directory format.
Overview¶
You can use an existing container image as your “base”, and then add
customization. This allows you to build multiple images from the same starting
point. For example, you may want to build several containers with the same
custom python installation, the same custom compiler toolchain, or the same base
MPI installation. Instead of building these from scratch each time, you could
start with the appropriate local base container and then customize the new
container in %post
, %environment
, %runscript
, etc.
Keywords¶
Bootstrap: localimage
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
From: /path/to/container/file/or/directory
The From
keyword is mandatory. It specifies the local container to use as a
base.
Fingerprints: 22045C8C0B1004D058DE4BEDA20C27EE7FF7BA84
The Fingerprints keyword is optional. It specifies one or more comma
separated fingerprints corresponding to PGP public keys. If present,
and the From:
keyword points to a SIF format image, it will be
verified and the build will only proceed if it is signed by keys
matching all of the specified fingerprints.
Notes¶
When building from a local container, all previous definition files that led to
the creation of the current container will be stored in a directory within the
container called /.singularity.d/bootstrap_history
. Singularity will also
alert you if environment variables have been changed between the base image and
the new image during bootstrap.
yum
bootstrap agent¶
This module allows you to build a Red Hat/CentOS/Scientific Linux style container from a mirror URI.
Overview¶
Use the yum
module to specify a base for a CentOS-like container. You must
also specify the URI for the mirror you would like to use.
Keywords¶
Bootstrap: yum
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
OSVersion: 7
The OSVersion keyword is optional. It specifies the OS version you would like to
use. It is only required if you have specified a %{OSVERSION} variable in the
MirrorURL
keyword.
MirrorURL: http://mirror.centos.org/centos-%{OSVERSION}/%{OSVERSION}/os/$basearch/
The MirrorURL keyword is mandatory. It specifies the URI to use as a mirror to
download the OS. If you define the OSVersion
keyword, then you can use it in
the URI as in the example above.
Include: yum
The Include keyword is optional. It allows you to install additional packages
into the core operating system. It is a best practice to supply only the bare
essentials such that the %post
section has what it needs to properly
complete the build. One common package you may want to install when using the
yum
build module is YUM itself.
Notes¶
There is a major limitation with using YUM to bootstrap a container. The RPM database that exists within the container will be created using the RPM library and Berkeley DB implementation that exists on the host system. If the RPM implementation inside the container is not compatible with the RPM database that was used to create the container, RPM and YUM commands inside the container may fail. This issue can be easily demonstrated by bootstrapping an older RHEL compatible image by a newer one (e.g. bootstrap a Centos 5 or 6 container from a Centos 7 host).
In order to use the yum
build module, you must have yum
installed on your system. It may seem counter-intuitive to install YUM on a
system that uses a different package manager, but you can do so. For instance,
on Ubuntu you can install it like so:
$ sudo apt-get update && sudo apt-get install yum
debootstrap
build agent¶
This module allows you to build a Debian/Ubuntu style container from a mirror URI.
Overview¶
Use the debootstrap
module to specify a base for a Debian-like container.
You must also specify the OS version and a URI for the mirror you would like to
use.
Keywords¶
Bootstrap: debootstrap
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
OSVersion: xenial
The OSVersion keyword is mandatory. It specifies the OS version you would like
to use. For Ubuntu you can use code words like trusty
(14.04), xenial
(16.04), and yakkety
(17.04). For Debian you can use values like stable
,
oldstable
, testing
, and unstable
or code words like wheezy
(7),
jesse
(8), and stretch
(9).
MirrorURL: http://us.archive.ubuntu.com/ubuntu/
The MirrorURL keyword is mandatory. It specifies a URI to use as a mirror when downloading the OS.
Include: somepackage
The Include keyword is optional. It allows you to install additional packages
into the core operating system. It is a best practice to supply only the bare
essentials such that the %post
section has what it needs to properly
complete the build.
Notes¶
In order to use the debootstrap
build module, you must have debootstrap
installed on your system. On Ubuntu you can install it like so:
$ sudo apt-get update && sudo apt-get install debootstrap
On CentOS you can install it from the epel repos like so:
$ sudo yum update && sudo yum install epel-release && sudo yum install debootstrap.noarch
arch
bootstrap agent¶
This module allows you to build a Arch Linux based container.
Overview¶
Use the arch
module to specify a base for an Arch Linux based container.
Arch Linux uses the aptly named pacman
package manager (all puns intended).
Keywords¶
Bootstrap: arch
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
The Arch Linux bootstrap module does not name any additional keywords at this
time. By defining the arch
module, you have essentially given all of the
information necessary for that particular bootstrap module to build a core
operating system.
Notes¶
Arch Linux is, by design, a very stripped down, light-weight OS. You may need to perform a significant amount of configuration to get a usable OS. Please refer to this README.md and the Arch Linux example for more info.
busybox
bootstrap agent¶
This module allows you to build a container based on BusyBox.
Overview¶
Use the busybox
module to specify a BusyBox base for container. You must
also specify a URI for the mirror you would like to use.
Keywords¶
Bootstrap: busybox
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
MirrorURL: https://www.busybox.net/downloads/binaries/1.26.1-defconfig-multiarch/busybox-x86_64
The MirrorURL keyword is mandatory. It specifies a URI to use as a mirror when downloading the OS.
Notes¶
You can build a fully functional BusyBox container that only takes up ~600kB of disk space!
zypper
bootstrap agent¶
This module allows you to build a Suse style container from a mirror URI.
Note
zypper
version 1.11.20 or greater is required on the host system, as
Singularity requires the --releasever
flag.
Overview¶
Use the zypper
module to specify a base for a Suse-like container. You must
also specify a URI for the mirror you would like to use.
Keywords¶
Bootstrap: zypper
The Bootstrap keyword is always mandatory. It describes the bootstrap module to use.
OSVersion: 42.2
The OSVersion keyword is optional. It specifies the OS version you would like to
use. It is only required if you have specified a %{OSVERSION} variable in the
MirrorURL
keyword.
Include: somepackage
The Include keyword is optional. It allows you to install additional packages
into the core operating system. It is a best practice to supply only the bare
essentials such that the %post
section has what it needs to properly
complete the build. One common package you may want to install when using the
zypper build module is zypper
itself.
docker-daemon
and docker-archive
bootstrap agents¶
If you are using docker locally there are two options for creating Singularity
images without the need for a repository. You can either build a SIF from a
docker-save
tar file or you can convert any docker image present in
docker’s daemon internal storage.
Overview¶
docker-daemon
allows you to build a SIF from any docker image currently
residing in docker’s daemon internal storage:
$ docker images alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 965ea09ff2eb 7 weeks ago 5.55MB
$ singularity run docker-daemon:alpine:latest
INFO: Converting OCI blobs to SIF format
INFO: Starting build...
Getting image source signatures
Copying blob 77cae8ab23bf done
Copying config 759e71f0d3 done
Writing manifest to image destination
Storing signatures
2019/12/11 14:53:24 info unpack layer: sha256:eb7c47c7f0fd0054242f35366d166e6b041dfb0b89e5f93a82ad3a3206222502
INFO: Creating SIF file...
Singularity>
while docker-archive
permits you to do the same thing starting from a docker
image stored in a docker-save
formatted tar file:
$ docker save -o alpine.tar alpine:latest
$ singularity run docker-archive:$(pwd)/alpine.tar
INFO: Converting OCI blobs to SIF format
INFO: Starting build...
Getting image source signatures
Copying blob 77cae8ab23bf done
Copying config 759e71f0d3 done
Writing manifest to image destination
Storing signatures
2019/12/11 15:25:09 info unpack layer: sha256:eb7c47c7f0fd0054242f35366d166e6b041dfb0b89e5f93a82ad3a3206222502
INFO: Creating SIF file...
Singularity>
Keywords¶
The docker-daemon
bootstrap agent can be used in a Singularity definition file
as follows:
From: docker-daemon:<image>:<tag>
where both <image>
and <tag>
are mandatory fields that must be written explicitly.
The docker-archive
bootstrap agent requires instead the path to the tar file
containing the image:
From: docker-archive:<path-to-tar-file>
Note that differently from the docker://
bootstrap agent both docker-daemon
and
docker-archive
don’t require a double slash //
after the colon in the agent name.
scratch
bootstrap agent¶
The scratch bootstrap agent allows you to start from a completely empty container. You are then responsible for adding any and all executables, libraries etc. that are required. Starting with a scratch container can be useful when you are aiming to minimize container size, and have a simple application / static binaries.
Overview¶
A minimal container providing a shell can be created by copying the
busybox
static binary into an empty scratch container:
Bootstrap: scratch
%setup
# Runs on host - fetch static busybox binary
curl -o /tmp/busybox https://www.busybox.net/downloads/binaries/1.31.0-i686-uclibc/busybox
# It needs to be executable
chmod +x /tmp/busybox
%files
# Copy from host into empty container
/tmp/busybox /bin/sh
%runscript
/bin/sh
The resulting container provides a shell, and is 696KiB in size:
$ ls -lah scratch.sif
-rwxr-xr-x. 1 dave dave 696K May 28 13:29 scratch.sif
$ singularity run scratch.sif
WARNING: passwd file doesn't exist in container, not updating
WARNING: group file doesn't exist in container, not updating
Singularity> echo "Hello from a 696KiB container"
Hello from a 696KiB container
Keywords
Bootstrap: scratch
There are no additional keywords for the scratch bootstrap agent.


friendly
friendly
?
# terminal, VS Code, etc.
from friendly import ...
# Special cases
from friendly.idle import ...
from friendly.mu import ...
from friendly.ipython import ...
from friendly.jupyter import ...
python -i my_program.py
# my_program.py
answer = 42
print('Hello World!')
"Run" my_program.py
Hello World!
>>> answer
42
>>>
import turtle as t
for i in range(4):
t.forward(100)
t.left(90)
> python turtle.py
Traceback (most recent call last):
File "turtle.py", line 3, in <module>
import turtle as t
File "...\turtle.py", line 6, in <module>
t.forward(100)
AttributeError: partially initialized module
'turtle' has no attribute 'forward'
(most likely due to a circular import)
friendly
python -m friendly turtle.py
python -im friendly turtle.py
...
Friendly Console ...
>>>
hint()
what()
why()
where()
www()
what()
in Frenchwhat(...)
friendly
?
from friendly.idle import run
run("test.py")
If the demo does not work.
from friendly.jupyter import *
friendly used to be called friendly-traceback.
>>> import this
...
Explicit is better than implicit.
...
friendly-traceback is more explicit than friendly.
Why was the name changed?
from friendly import ...
from friendly.idle import ...
from friendly.mu import ...
from friendly.ipython import ...
from friendly.jupyter import ...
# are better than
from friendly_traceback.idle import ...
Besides, traceback is not exactly a beginner-friendly term and, in the future, friendly might do more than simply helping with tracebacks ...
import *
?Friendly.why() == why(), etc
where( is the documentation? )
😏
> python -m pip install friendly
> python -m friendly
Friendly Console version ...
>>> www()