nts of a ".cvsignore" in your patterns, you should use the rule ":C", which creates a dir-merge of the .cvsignore file, but parsed in a CVS-compatible manner. You can use this to affect where the --cvs-exclude (-C) option’s inclusion of the per-directory .cvsignore file gets placed into your rules by putting the ":C" wherever you like in your filter rules. Without this, rsync would add the dir-merge rule for the .cvsignore file at the end of all your other rules (giving it a lower priority than your command-line rules). For example: cat <<EOT | rsync -avC --filter='. -' a/ b + foo.o :C - *.old EOT rsync -avC --include=foo.o -f :C --exclude='*.old' a/ b Both of the above rsync commands are identical. Each one will merge all the per-directory .cvsignore rules in the middle of the list rather than at the end. This allows their dir-specific rules to supersede the rules that follow the :C instead of being subservient to all your rules. To affect the other CVS exclude rules (i.e. the default list of exclusions, the contents of $HOME/.cvsignore, and the value of $CVSIGNORE) you should omit the -C command-line option and instead insert a "-C" rule into your filter rules; e.g. "--filter=-C". LIST-CLEARING FILTER RULE You can clear the current include/exclude list by using the "!" filter rule (as introduced in the FILTER RULES section above). The "current" list is either the global list of rules (if the rule is encountered while parsing the filter options) or a set of per-directory rules (which are inherited in their own sub-list, so a subdirectory can use this to clear out the parent’s rules). ANCHORING INCLUDE/EXCLUDE PATTERNS As mentioned earlier, global include/exclude patterns are anchored at the "root of the transfer" (as opposed to per-directory patterns, which are anchored at the merge-file’s directory). If you think of the transfer as a subtree of names that are being sent from sender to receiver, the transfer-root is where the tree starts to be duplicated in the destina‐ tion directory. This root governs where patterns that start with a / match. Because the matching is relative to the transfer-root, changing the trailing slash on a source path or changing your use of the --relative option affects the path you need to use in your matching (in addition to changing how much of the file tree is duplicated on the destination host). The following examples demonstrate this. Let’s say that we want to match two source files, one with an absolute path of "/home/me/foo/bar", and one with a path of "/home/you/bar/baz". Here is how the various command choices differ for a 2-source transfer: Example cmd: rsync -a /home/me /home/you /dest +/- pattern: /me/foo/bar +/- pattern: /you/bar/baz Target file: /dest/me/foo/bar Target file: /dest/you/bar/baz Example cmd: rsync -a /home/me/ /home/you/ /dest +/- pattern: /foo/bar (note missing "me") +/- pattern: /bar/baz (note missing "you") Target file: /dest/foo/bar Target file: /dest/bar/baz Example cmd: rsync -a --relative /home/me/ /home/you /dest +/- pattern: /home/me/foo/bar (note full path) +/- pattern: /home/you/bar/baz (ditto) Target file: /dest/home/me/foo/bar Target file: /dest/home/you/bar/baz Example cmd: cd /home; rsync -a --relative me/foo you/ /dest +/- pattern: /me/foo/bar (starts at specified path) +/- pattern: /you/bar/baz (ditto) Target file: /dest/me/foo/bar Target file: /dest/you/bar/baz The easiest way to see what name you should filter is to just look at the output when using --verbose and put a / in front of the name (use the --dry-run option if you’re not yet ready to copy any files). PER-DIRECTORY RULES AND DELETE Without a delete option, per-directory rules are only relevant on the sending side, so you can feel free to exclude the merge files themselves without affecting the transfer. To make this easy, the ’e’ modifier adds this exclude for you, as seen in these two equivalent commands: rsync -av --filter=': .excl' --exclude=.excl host:src/dir /dest rsync -av --filter=':e .excl' host:src/dir /dest However, if you want to do a delete on the receiving side AND you want some files to be excluded from being deleted, you’ll need to be sure that the receiving side knows what files to exclude. The easiest way is to include the per-directory merge files in the transfer and use --delete-after, because this ensures that the receiving side gets all the same exclude rules as the sending side before it tries to delete any‐ thing: rsync -avF --delete-after host:src/dir /dest However, if the merge files are not a part of the transfer, you’ll need to either specify some global exclude rules (i.e. specified on the com‐ mand line), or you’ll need to maintain your own per-directory merge files on the receiving side. An example of the first is this (assume that the remote .rules files exclude themselves): rsync -av --filter=’: .rules’ --filter=’. /my/extra.rules’ --delete host:src/dir /dest In the above example the extra.rules file can affect both sides of the transfer, but (on the sending side) the rules are subservient to the rules merged from the .rules files because they were specified after the per-directory merge rule. In one final example, the remote side is excluding the .rsync-filter files from the transfer, but we want to use our own .rsync-filter files to control what gets deleted on the receiving side. To do this we must specifically exclude the per-directory merge files (so that they don’t get deleted) and then put rules into the local files to control what else should not get deleted. Like one of these commands: rsync -av --filter=':e /.rsync-filter' --delete \ host:src/dir /dest rsync -avFF --delete host:src/dir /dest BATCH MODE Batch mode can be used to apply the same set of updates to many identical systems. Suppose one has a tree which is replicated on a number of hosts. Now suppose some changes have been made to this source tree and those changes need to be propagated to the other hosts. In order to do this using batch mode, rsync is run with the write-batch option to apply the changes made to the source tree to one of the destination trees. The write-batch option causes the rsync client to store in a "batch file" all the information needed to repeat this operation against other, identical destination trees. Generating the batch file once saves having to perform the file status, checksum, and data block generation more than once when updating multiple destination trees. Multicast transport protocols can be used to transfer the batch update files in parallel to many hosts at once, instead of sending the same data to every host individually. To apply the recorded changes to another destination tree, run rsync with the read-batch option, specifying the name of the same batch file, and the destination tree. Rsync updates the destination tree using the information stored in the batch file. For your convenience, a script file is also created when the write-batch option is used: it will be named the same as the batch file with ".sh" appended. This script file contains a command-line suitable for updating a destination tree using the associated batch file. It can be executed using a Bourne (or Bourne-like) shell, optionally passing in an alternate destination tree pathname which is then used instead of the original des‐ tination path. This is useful when the destination tree path on the cur‐ rent host differs from the one used to create the batch file. Examples: $ rsync --write-batch=foo -a host:/source/dir/ /adest/dir/ $ scp foo* remote: $ ssh remote ./foo.sh /bdest/dir/ $ rsync --write-batch=foo -a /source/dir/ /adest/dir/ $ ssh remote rsync --read-batch=- -a /bdest/dir/ <foo In these examples, rsync is used to update /adest/dir/ from /source/dir/ and the information to repeat this operation is stored in "foo" and "foo.sh". The host "remote" is then updated with the batched data going into the directory /bdest/dir. The differences between the two examples reveals some of the flexibility you have in how you deal with batches: o The first example shows that the initial copy doesn’t have to be local -- you can push or pull data to/from a remote host using either the remote-shell syntax or rsync daemon syntax, as desired. o The first example uses the created "foo.sh" file to get the right rsync options when running the read-batch command on the remote host. o The second example reads the batch data via standard input so that the batch file doesn’t need to be copied to the remote machine first. This example avoids the foo.sh script because it needed to use a modified --read-batch option, but you could edit the script file if you wished to make use of it (just be sure that no other option is trying to use standard input, such as the "--exclude-from=-" option). Caveats: The read-batch option expects the destination tree that it is updating to be identical to the destination tree that was used to create the batch update fileset. When a difference between the destination trees is encountered the update might be discarded with a warning (if the file appears to be up-to-date already) or the file-update may be attempted and then, if the file fails to verify, the update discarded with an error. This means that it should be safe to re-run a read-batch operation if the command got interrupted. If you wish to force the batched-update to always be attempted regardless of the file’s size and date, use the -I option (when reading the batch). If an error occurs, the destination tree will probably be in a partially updated state. In that case, rsync can be used in its regular (non-batch) mode of operation to fix up the destination tree. The rsync version used on all destinations must be at least as new as the one used to generate the batch file. Rsync will die with an error if the protocol version in the batch file is too new for the batch-reading rsync to handle. See also the --protocol option for a way to have the creating rsync generate a batch file that an older rsync can understand. (Note that batch files changed format in version 2.6.3, so mixing versions older than that with newer versions will not work.) When reading a batch file, rsync will force the value of certain options to match the data in the batch file if you didn’t set them to the same as the batch-writing command. Other options can (and should) be changed. For instance --write-batch changes to --read-batch, --files-from is dropped, and the --filter/--include/--exclude options are not needed unless one of the --delete options is specified. The code that creates the BATCH.sh file transforms any fil‐ ter/include/exclude options into a single list that is appended as a "here" document to the shell script file. An advanced user can use this to modify the exclude list if a change in what gets deleted by --delete is desired. A normal user can ignore this detail and just use the shell script as an easy way to run the appropriate --read-batch command for the batched data. The original batch mode in rsync was based on "rsync+", but the latest version uses a new implementation. SYMBOLIC LINKS Three basic behaviors are possible when rsync encounters a symbolic link in the source directory. By default, symbolic links are not transferred at all. A message "skip‐ ping non-regular" file is emitted for any symlinks that exist. If --links is specified, then symlinks are recreated with the same target on the destination. Note that --archive implies --links. If --copy-links is specified, then symlinks are "collapsed" by copying their referent, rather than the symlink. Rsync can also distinguish "safe" and "unsafe" symbolic links. An exam‐ ple where this might be used is a web site mirror that wishes to ensure that the rsync module that is copied does not include symbolic links to /etc/passwd in the public section of the site. Using --copy-unsafe-links will cause any links to be copied as the file they point to on the desti‐ nation. Using --safe-links will cause unsafe links to be omitted alto‐ gether. (Note that you must specify --links for --safe-links to have any effect.) Symbolic links are considered unsafe if they are absolute symlinks (start with /), empty, or if they contain enough ".." components to ascend from the directory being copied. Here’s a summary of how the symlink options are interpreted. The list is in order of precedence, so if your combination of options isn’t men‐ tioned, use the first line that is a complete subset of your options: --copy-links Turn all symlinks into normal files (leaving no symlinks for any other options to affect). --links --copy-unsafe-links Turn all unsafe symlinks into files and duplicate all safe sym‐ links. --copy-unsafe-links Turn all unsafe symlinks into files, noisily skip all safe sym‐ links. --links --safe-links Duplicate safe symlinks and skip unsafe ones. --links Duplicate all symlinks. DIAGNOSTICS rsync occasionally produces error messages that may seem a little cryp‐ tic. The one that seems to cause the most confusion is "protocol version mismatch -- is your shell clean?". This message is usually caused by your startup scripts or remote shell facility producing unwanted garbage on the stream that rsync is using for its transport. The way to diagnose this problem is to run your remote shell like this: ssh remotehost /bin/true > out.dat then look at out.dat. If everything is working correctly then out.dat should be a zero length file. If you are getting the above error from rsync then you will probably find that out.dat contains some text or data. Look at the contents and try to work out what is producing it. The most common cause is incorrectly configured shell startup scripts (such as .cshrc or .profile) that contain output statements for non-interactive logins. If you are having trouble debugging filter patterns, then try specifying the -vv option. At this level of verbosity rsync will show why each individual file is included or excluded. EXIT VALUES 0 Success 1 Syntax or usage error 2 Protocol incompatibility 3 Errors selecting input/output files, dirs 4 Requested action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified that is supported by the client and not by the server. 5 Error starting client-server protocol 6 Daemon unable to append to log-file 10 Error in socket I/O 11 Error in file I/O 12 Error in rsync protocol data stream 13 Errors with program diagnostics 14 Error in IPC code 20 Received SIGUSR1 or SIGINT 21 Some error returned by waitpid() 22 Error allocating core memory buffers 23 Partial transfer due to error 24 Partial transfer due to vanished source files 25 The --max-delete limit stopped deletions 30 Timeout in data send/receive 35 Timeout waiting for daemon connection ENVIRONMENT VARIABLES CVSIGNORE The CVSIGNORE environment variable supplements any ignore patterns in .cvsignore files. See the --cvs-exclude option for more details. RSYNC_ICONV Specify a default --iconv setting using this environment variable. (First supported in 3.0.0.) RSYNC_RSH The RSYNC_RSH environment variable allows you to override the default shell used as the transport for rsync. Command line options are permitted after the command name, just as in the -e option. RSYNC_PROXY The RSYNC_PROXY environment variable allows you to redirect your rsync client to use a web proxy when connecting to a rsync daemon. You should set RSYNC_PROXY to a hostname:port pair. RSYNC_PASSWORD Setting RSYNC_PASSWORD to the required password allows you to run authenticated rsync connections to an rsync daemon without user intervention. Note that this does not supply a password to a remote shell transport such as ssh; to learn how to do that, con‐ sult the remote shell’s documentation. USER or LOGNAME The USER or LOGNAME environment variables are used to determine the default username sent to an rsync daemon. If neither is set, the username defaults to "nobody". HOME The HOME environment variable is used to find the user’s default .cvsignore file. FILES /etc/rsyncd.conf or rsyncd.conf SEE ALSO rsyncd.conf(5) BUGS times are transferred as *nix time_t values When transferring to FAT filesystems rsync may re-sync unmodified files. See the comments on the --modify-window option. file permissions, devices, etc. are transferred as native numerical val‐ ues see also the comments on the --delete option Please report bugs! See the web site at http://rsync.samba.org/ VERSION This man page is current for version 3.0.9 of rsync. INTERNAL OPTIONS The options --server and --sender are used internally by rsync, and should never be typed by a user under normal circumstances. Some aware‐ ness of these options may be needed in certain scenarios, such as when setting up a login that can only run an rsync command. For instance, the support directory of the rsync distribution has an example script named rrsync (for restricted rsync) that can be used with a restricted ssh login. CREDITS rsync is distributed under the GNU General Public License. See the file COPYING for details. A WEB site is available at http://rsync.samba.org/. The site includes an FAQ-O-Matic which may cover questions unanswered by this manual page. The primary ftp site for rsync is ftp://rsync.samba.org/pub/rsync. We would be delighted to hear from you if you like this program. Please contact the mailing-list at<EMAIL_ADDRESS>This program uses the excellent zlib compression library written by Jean-loup Gailly and Mark Adler. THANKS Special thanks go out to: John Van Essen, Matt McCutchen, Wesley W. Terp‐ stra, David Dykstra, Jos Backus, Sebastian Krahmer, Martin Pool, and our gone-but-not-forgotten compadre, J.W. Schultz. Thanks also to Richard Brent, Brendan Mackay, Bill Waite, Stephen Roth‐ well and David Bell. I’ve probably missed some people, my apologies if I have. AUTHOR rsync was originally written by Andrew Tridgell and Paul Mackerras. Many people have later contributed to it. It is currently maintained by Wayne Davison. Mailing lists for support and development are available at http://lists.samba.org 23 Sep 2011 rsync(1)


Chocolate Pizza
POSTED ON 15 DEC 2013/ DESSERTS
For the fig-swirl: Melt butter over medium heat in a saucepan. Add brown sugar and stir to dissolve. Halve all of the figs and toss in the saucepan with water and lemon juice. Cook over medium heat, stirring frequently, until you have a chunky-jammy mixture. Add salt with one or two stirs, set aside and let cool completely.
Ice cream: Ina a small pot over medium heat, combine milk, and granulated sugar until the sugar is completely dissolved and the milk is jut barely lukewarm. Whisk in hte egg yolks. Set mixture in the fridge and wait until the fig mixture is cooled.
Using an ice cream machine, pour liquids into the frozen basin and process according to manufacturer instructions, i.e., let spin and thicken for 20 minutes before adding a marscarpone, fig jam mixture, and the nuts. Continue to process for +/- 10 minutes. Pour semi-frozen mixture into a pyrex dish or glass tupperware. Freeze for at least two hours before serving.
- 1 1/2 cups milk
- 1/2 cup marscarpone
- 1/2 tsp pink salt
- 1 lb Black Mission Figs
- 1/2 cup brown sugar
- 2-4 tbsp water
- 1 1/2 cups heavy cream
- 1/3 granulated sugar
- 2 egg yolks
- 1 lemon, juiced
- 2 tbsp butter
- 1 cup honey roasted pecans, roughly chopped


Contact Form
The easiest way to add a contact form to your shop.
Contact Form
The easiest way to add a contact form to your shop.
Contact Form
The easiest way to add a contact form to your shop.
Contact Form
The easiest way to add a contact form to your shop.
Contact Form
The easiest way to add a contact form to your shop.
Contact Form
The easiest way to add a contact form to your shop.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/ICMS.202018.3A.20What.20is.20in.20mathlib.3F.html ---
Hi all, you can check out yesterday's ICMS talk on YouTube: https://youtu.be/5tS4j_A1ZvU
The Lean 3 mathematical library (mathlib)
Abstract: The Lean 3 "mathlib" library has been rewritten from the ground up to take advantage of the new features and tactics framework. In this article we take stock of the meteoric growth of the library in the past several months, which covers elementary number theory, algebra, ring theory, topology and analysis, set theory, as well as support for verified pure-functional programming with lists, maps, arrays, quotient types, and coinductive types. This is supplemented with additional tactics, written in Lean on top of the Lean 3 tactic framework, for proving arithmetic equalities and inequalities, deciding the equational theory of commutative rings, as well as general automation tactics based on heuristic instantiation and resolution proving.
I got the first view on youtube!
I wondered who it was, as I was getting the second one ;-)
12 views and counting
Like, comment and subscribe ;)
(not really, I don't really care about getting a youtube audience)
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


% rebase('templates/template.ptl', title='Staff')
Your section leader is your primary point of contact if you need help with homework, grading, section or most other course issues. To find out who your section leader is, or the time/place of your section, click on the "View My Section" link in the "Section" dropdown at the top.
Section leaders also have weekly helper hours at the LaIR. Click here to view the current LaIR helper schedule.


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @(params: Map[String,Any]) @uk.gov.hmrc.hmrcemailrenderer.templates.helpers.html.template_main(params,s"Failed submission of VAT Online EC Sales List declaration for VAT Registration Number ${params("identifier")}") {
Thank you for using the VAT online service.
Unfortunately the information provided in your VAT EC Sales List declaration for VAT Registration Number @params("identifier") which you sent over the Internet on @params("receivedDate"), has failed HMRC data checks and so cannot be accepted.
You will need to review and resubmit corrected information before we can accept your VAT EC Sales List declaration.
Because your VAT EC Sales List declaration has failed data checks and not been accepted you are still due to file a VAT EC Sales List declaration for VAT Registration number @params("identifier").
Please resubmit.
Please refer to any help documentation associated with the software you used to prepare your VAT EC Sales List declaration to find out how to retrieve and review the details of the reason(s) your submission failed.
You will need to correct your information and resubmit it.
For information on how to complete your VAT EC Sales List declaration, please visit the HMRC website and refer to our; FAQ: Completing your EC Sales Lists.
Our website provides the latest information about our Internet services and regularly updated advisory information to help answer your queries.
If you have a specific query relating to this VAT EC Sales List declaration, please contact the eCustomer Support Helpdesk on 0300 200 3701.
}


Dog owner dies following rare infection as a result of being licked by pet
by Nick FitzgeraldThe healthy man was left with gangrene and blisters which he developed from his dog's saliva
A dog owner has tragically died after being infected with a rare bacterial disease as a result of his pet licking him.
The 63-year-old developed gangrene and broke out in blisters following contact with the dog's saliva which had a deadly bacteria called Capnocytophaga canimorus present.
Extremely rare, the bacteria is more commonly transmitted through bites, however, in some cases it can also be passed on by a lick.
As a result, the man spent over two weeks in hospital fighting a string of different health conditions including pneumonia, gangrene and a fever of 41C.
When he first went to hospital he only had flu-like symptoms for three days, a fever and difficulty with breathing.
In the first four days his condition rapidly decreased, beginning with a rash on his face and nerve pains in his legs.
By the time the man started medical treatment he already had severe sepsis according to doctors. He required intensive care in an effort to save his life.

The conditions then led to cardiac arrest but the man was later resuscitated only to be put on life support thereafter.
Scans of his brain revealed he had a massive build up of fluid in his brain, causing major damage to the organ.
While this was happening, as well as multiple organs failing, doctors and his family thought it best to end his suffering and stop the the life support machine keeping him alive.
Sadly, the man died 16 days after being admitted to hospital. His case was reported in a medical journal by doctors from the Rote Kreuz Krankenhausin in Bremen, Germany.


Xenon
1.12.2 Minecraft Forge Anarchy/Cpvp/Utility Client
Modules
Example of Xenon ClickGui Modules (This is not what the gui looks like)
Download
select a version of xenon to download
Devs
Developers of Xenon


| Author | Rob Hamerling, Copyright © 2010..2011, all rights reserved. |
| Adapted-by | |
| Compiler | 2.4n |
RealTimeClock support: - routines for control of realtime clock and alarm . This library supports: - RTCC modules like in 18fxxj11, 18fxxj50 and several other PICs. . Available procedures and functions for application programs (not all of these may be implemented yet!). . Time/clock related operations: - rtc_set_clock() -- enable/disable RTCC module - rtc_calibrate() -- compensate crystal frequency aberration - rtc_pin_signal() -- RTCC output pin signal control - rtc_get_date() -- year,month,day (bcd) - rtc_set_date() - rtc_get_time() -- hour,minute,second (bcd) - rtc_set_time() - rtc_get_secondofday() -- second of day (binary) - rtc_get_minuteofday() -- minute of day (binary) - rtc_get_dayofweek() -- day of week number (binary) - rtc_get_dayofmonth() -- day of month (binary) - rtc_get_dayofyear() -- day of year (binary) . Alarm related operations: - rtc_set_alarm() -- enable/disable alarm - rtc_get_alarm_date() -- alarm month,day (bcd), no year! - rtc_set_alarm_date() - rtc_get_alarm_time() -- alarm hour,minute,second (bcd) - rtc_set_alarm_time() - rtc_set_alarm_dayofweek() - rtc_set_alarm_interval() -- alarm interval (binary) - rtc_set_alarm_repeat() -- alarm repeat (binary) . General purpose functions and procedures: - bcd2bin() -- convert byte from bcd to binary - mult60() -- hours -> minutes; minutes -> seconds . The RTCC uses bcd notation for year, month, day, hour, minute and second (all of these are byte variables). . Bytes in bcd-notation can easily be displayed with print_byte_hex() of the Jallib print library. . For the compare of dates and times (for smaller or larger) the library provides some functions which return binary values for minute or second of the day, day of the week, day of the month and day of the year.
No dependency found
var byte _alrm_sec = 0x00
var byte _rtc_min = 0x00
var byte _rtc_hour = 0x00
var byte _alrm_hour = 0x00
var byte _alrm_month = 0x01
var byte _alrm_dayofweek = 0x00
var byte _alrm_dayofmonth = 0x01
var byte _rtc_year = 0x00
var byte _alrm_min = 0x00
var byte _rtc_dayofmonth = 0x01
var byte _rtc_month = 0x01
var byte _rtc_sec = 0x00
var byte _rtc_dayofweek
rtc_calibrate(sbyte in calibration)
rtc_set_alarm_interval(byte in interval)
rtc_set_alarm_dayofweek(byte in weekday)
rtc_set_alarm(bit in state)
rtc_set_alarm_repeat(byte in repeats)
rtc_pin_signal(bit*2 in pin_signal_selection_mask)
rtc_set_clock(bit in state)
mult60(word in x) return dword
rtc_get_dayofweek() return byte
rtc_get_dayofyear() return word
rtc_get_minuteofday() return word
bcd2bin(byte in bcd) return byte
rtc_get_secondofday() return dword
rtc_get_dayofmonth() return byte
var byte _alrm_sec = 0x00
alarm second
var byte _rtc_min = 0x00
minute
var byte _rtc_hour = 0x00
hour
var byte _alrm_hour = 0x00
alarm hour
var byte _alrm_month = 0x01
alarm month
var byte _alrm_dayofweek = 0x00
alarm day of week
var byte _alrm_dayofmonth = 0x01
alarm day
var byte _rtc_year = 0x00
Global variables internally used by rtcc and alarm functions and procedures. Not to be accessed by application programs!
var byte _alrm_min = 0x00
alarm minute
var byte _rtc_dayofmonth = 0x01
day of month
var byte _rtc_month = 0x01
month
var byte _rtc_sec = 0x00
second
var byte _rtc_dayofweek
day of week
rtc_calibrate(sbyte in calibration)
Calibrate the RTCC module. input: calibration value output: none returns: nothing note: Calibration value is a signed byte (-128..+127). A negative value must be specified when the crystal is too fast. See datasheet for the calculation of the amount.
rtc_set_alarm_interval(byte in interval)
Set alarm interval. input: alarm_interval with a RTC_ALARM_INTERVAL_xxxx mask (see the defined RTC_ALARM_INTERVAL_xxxx masks above) output: none returns: nothing
rtc_set_alarm_dayofweek(byte in weekday)
Set alarm time. input: day-of-week of alarm (binary, 0..6) output: none returns: nothing Notes: When setting the alarm date the alarm interval is by default set to once a week on the specified day of the week. You may want to set the alarm time first, or control the alarm interval separately.
rtc_set_alarm(bit in state)
Enable or disable alarm. input: alarm_state (bit): true - enable alarm false - disable alarm output: none returns: nothing
rtc_set_alarm_repeat(byte in repeats)
Set alarm repetition. input: repeats: number of times to repeat alarm signal (binary) output: none returns: nothing notes: The following will happen after an alarm condition: with repeat value 0 there will be 1 alarm event with repeat values 1..254 there will be as many more alarm events as specified with(at intervals as specified with rtc_set_alarm_interval() ) with repeat value 255 there will be indefinite alarm events The ALRMCFG_ALRMEN bit will be cleared after the last alarm event (thus never with repeat value 255).
rtc_pin_signal(bit*2 in pin_signal_selection_mask)
Select the RTCC output pin signal functionality. input: 2-bits mask: one of the RTC_PIN_xxxx constants (see above) output: none returns: nothing notes: - With 'NONE' pin_RTCC is released and available for I/O See the datasheet for the meaning of the different masks.
rtc_set_clock(bit in state)
Enable or disable the RTCC module. input: none output: none returns: nothing notes: The T1 oscillator is enable/disabled too!
_rtc_read()
Read the realtime clock. input: none output: none returns: nothing notes: read clock/calendar registers into local variables
_rtc_write_control(bit in control)
Enable or disable RTCC register writes. input: bit (enable / disable) output: none returns: nothing notes: (Re)setting the RTCWREN bit in RTCCFG requires a strict sequence, see datasheets for details. JalV2 2.4n and 2.4o(beta) generate the correct sequences with the code below.
_rtc_write()
Write the realtime clock. input: none output: none returns: nothing notes: - enable writing to RTC registers write clock/calendar registers disable writes
_rtc_alrm_read()
Read the alarm setting. input: none output: none returns: nothing notes: read alarm registers into local variables
_rtc_alrm_write()
Write the alarm time of realtime clock. input: none output: none returns: nothing notes: - disable alarm write alarm registers from local variables restore alarm state
mult60(word in x) return dword
Multiply a word by 60 (typically for minutes to seconds or hours to minutes) input: byte with binary data output: none returns: word with product notes: - (x * 60) -> x * (64 - 4) -> (x * 64) - (x * 4) algorithm without multiplication word as input, dword as returnvalue chosen for relative second of day (function rtc_hhmmss_bin())
rtc_get_dayofweek() return byte
Get day of week. input: none output: none returns: day of the week (binary byte 0..6)
rtc_get_dayofyear() return word
Get day of year. input: none output: none returns: number of days sinece 1st of January (binary word 0..365)
rtc_get_minuteofday() return word
Get minute of day. input: none output: none returns: number of minutes since midnight (binary word)
bcd2bin(byte in bcd) return byte
====================================================================== General purpose functions / procedures ====================================================================== Convert one byte packed bcd to one byte binary. input: byte with bcd data output: none returns: byte with binary value of bcd byte notes: - A byte in bcd notation contains ((16 * tens) + ones). To convert it to a binary value: subtract (6 * tens) Algorithm is modeled after an assembler version of Scott Dattalo at PicList (but slightly less efficient!).
rtc_get_secondofday() return dword
Get second of day. input: none output: none returns: number of seconds since midnight (binary dword)
rtc_get_dayofmonth() return byte
Get day of month. input: none output: none returns: number of days since 1st of the month (binary byte 0..30)
| 18f26j11 | 18f26j11_rtcc_hw_kbd_lcd.jal |
| 18f27j53 | 18f27j53_rtcc_hw_alarm.jal |


Tristan Libeau
< Web Developer/>
Introduction
Portfolio
Resume
Project Portfolio
Password Generator
GitHub repository
Deployed App
Question Quiz
GitHub repository
Deployed App
Day Planner
GitHub repository
Deployed App
Weather Dashboard
GitHub repository
Deployed App
Group Project 1
GitHub repository
Deployed App
Group Project 2
GitHub Repository
Deployed App
Note-Taker
GitHub Repository
Deployed App


require('crypto')
is a human right
cascadiafest
2016
UN Declaration of Human Rights
Article 12
No one shall be subjected to arbitrary interference
with their privacy, family, home or correspondence,
nor to attacks upon their honour and reputation.
Everyone has the right to the protection of the law
against such interference or attacks.
My talk today is going to cover a bit of history, some math, and a fair bit of code examples.
The underlying motivation in all of this is based in the desire for a group of people to exercise the right best summarized here in article 12 of the UN Declaration of Human Rights
Not only are you protected from interference with your correspondence and you privacy but it lists the stakes involved: honor and reputation.
The word attack is also really strong language, no where else in the document do you get such strong language. You mostly see words like deprived, and persectuion.
While I'm going to talk a lot about people starting businesses and patent fights between academics, the people doing the fighting are fighting for the rights of everyone to be secure in their correspondence.
encryption is about
privacy and verification
privacy is about keeping your message secret
verification is about detecting if a message has been tampered with, and identifying the source of the message
combine privacy and verification and you get security

the hero
the hero of the story today is the average person... citizens, you folk, all of us in this room

the villains
the villains are the intelligence agencies, military generals, folks like that
3000 BCE - 1949 AD

it's hard to talk about early crypto, because so much of it is so bad
not much is very notable
every system was fundamentally flawed in one way or another
sometimes the systems were flawed in every possible way we can think of

weak
protocols
they relied on weak protocols
it didn't matter matter how good the scrambling was, the impelementation was poor
a lot of the time the systems depended on keeping the design secret
or keeping the code book out of your enemies hands, which is tough when your enemy is willing to shoot you
once these systems were broken not only are all of the future messages exposed, all the previous messages are exposed
worse still, someone can now impersonate soldiers in the field until you get a new codebook out

FIRST COMPUTERS
some of the first computers were built to exploit the weaknesses in early crypto
for example, the known plaintext attack - one side would lay mines then wait for the other side to clear the mines then send an encrypted communication saying "all clear"
if you could get a message you knew said "all clear" then you could reverse engineer the secret codes for the day
information theory

1949
people responsible for making ciphers strong were very much at a disadvantage until 1949 with the advent of information theory
mathematicians formalized the tools necessary to describe information transfer, storage, compression
the language necessary to describe modern cryptosystems was invented in 1949
1951 - 1970
Not long after, in 1951 the NSA is founded.
During this period the NSA is feeling good.
Anyone who wants to work on cryptography goes and works for them.
They control the funding mechanisms for cryptography.
They can also delcare patent applications to be classified in the name of national security.
All the knowledge is kept by them.
They built cryptosystems to be used by spies and the military.
If you wanted to work on these things you needed to agree with the philosophy behind those organizations.
early 70's
During the early 70's banking was becoming computerized.
Commerce demanded a way to perform secure wire transfers.
1975

DES
In 1975 we get DES.
DES is the first serious attempt at a widespread standard for data security.
It was successfully impelmented in chip, which made it easy to sell and use.
An example of a DES impelmentation is HBO used DES to scramble the signal when transmitting it over satellite.
Even though the NSA was involved in the design of the cipher, the only real weakness in DES is that it shipped with a 56 bit key strength.
The designers wanted a 128 bit length key, but hardware concerns limited it to 64 bit, and government interference got it down to 56 bits.
strength
Each single bit reduction cuts the strength in half. 100 bit is twice as strong as 99 bit. 99 bit twice as strong as 98.
So think about the reduction in strength from 128 to 56.
symmetric cryptography
DES is a type of symmetric cryptography
plain text
key
encipher
cipher text
decipher
key
plain text
Symmetric cryptography is the easier to understand type of encryption.
You have a key and an scrambling algorithm.

The recipient takes the same key and a reverse process to unscramble the data to recover the plaintext
If you can keep the key secret, this works really well.

const c = require('crypto') // es6... (e_e)
c.getCiphers()
// (partial results)
[ "aes128","aes192","aes256","blowfish",
"camellia128","camellia192","camellia256","cast",
"des","des3","desx","idea","rc2","rc2-40-cbc",
"rc2-64-cbc","rc4","rc4-40","seed" ]
DES is still around.
You can find it and other symmetric ciphers in nodejs by running getCiphers()
This functionality is available to node because we link OpenSSL during compilation.
Node crypto is powered by openssl.
☎☈☏
secure telephony
Big Mainframes needed secure communications.
They also needed a way to store information at rest.
Researchers with the assistance of the NSA created a block-cipher which took a fixed block of bytes, and performed multiple rounds of permutations.
Specifically the permutations are multiple rounds of shuffling and substitution.
s-box
This is the hardest to understand part of modern symmetric encryption.
Each round of encryption you take a chunk of bytes, and perform a lookup operation with the values themselves.
You take your current value, and use it to find the new value.
Your chunk is 68. Go find (6, 8) > 45. Now next round your chunk is 45.
Do that 12 or 16 times combined with a shuffle operation after each step and you have the makings of a strong block cipher.
These s-boxes are hardcoded, and the values in the s-boxes are what makes them strong.
The NSA provided the s-boxes for DES.
Since the operation is so complex there is no way to verify that there is no hidden trap door in the s-box
Does the NSA have a special set of decoder s-boxes that allow them to more quickly guess your key?
des example
var crypto = require('crypto'); var assert = require('assert')
var key = 'p4ssw0rd'; var message = 'hello cascadiafest!'
// encrypt
var cipher = crypto.createCipher('des', key)
var cipher_text = cipher.update(message, 'utf8', 'hex')
cipher_text += cipher.final('hex')
// decrypt
var decipher = crypto.createDecipher('des', key)
var plain_text = decipher.update(cipher_text, 'hex', 'utf8')
plain_text += decipher.final('utf8')
assert.equal(plain_text, message)
So back to DES... it was a hit, we still use a version of it today.
Even thoug hthe NSA reduced the key size in their recommendation, it was secure and widespread.
It put cryptography outside of the realm of the military and spies.
It is about to become an industry.
late 1970s
This got everyone thinking hard about everything to do with codes and ciphers.
Where can we apply these ideas and make money?

1976
It wasn't all commerce and banking. A bunch of these types of folks got involved.
Californians...
Whit Diffie and Martin Hellman published a seminal paper on public key cryptography.
symmetric
asymmetric encryption
They and a bunch of smart folks focused on the most obvious limitations of symmetric crypto which is that no matter how strong the cipher is your key can be leaked.
Their solution is to break the key up into two parts.
Where one part could be leaked, or even publicized. And one part would be kept secret.
All you would need to send a person a message is their publicly available information.
You combine that with your private information, and that can establish a secure communication channel.
one way functions
the secret to this lies in a concept in math called the one-way-function
a = b + c
b = a - c
c = a - b
easy
this isn't a two-way function, that's something else entirely, these are examples of not one-way-functions
given components of one equation you can derive all the other fields by performing inversed operations
easy stuff
ax = c
given A and C
solve for X
not easy
this becomes an issue when your equations look like this
that exponent really complicates matters
there isn't an efficient one-step solution to this problem, and that's what they leveraged
diffie-hellman key exchange
gx mod p = public
you are given G and P
choose a large X
it is your secret
this is the diffie hellman key exchange, the first really successful public key encryption algorithm
g and p are agreed upon by both parties, and eveyrone picks their own value for X and keeps it secret
then they run the X through the equation and publish the result, the public number
what is mod? I'll show you!
math
5 mod 2 = 1
2 √ 5 = 2, remainder 1
6 mod 2 = 0
2 √ 6 = 3, remainder 0
really quick, mod describes the remainder of a division operation
so five mod two is 5 divided by 2, which is two, with the remainder is 1
4 mod 2 is 4 divided by 2, which is 2 remainder zero
3 mod 1 is one
2 mod 2 is zero
g x mod p = pub1
g y mod p = pub2
pub2 x
mod p =
c
pub1 y
mod p =
c
so this is the key exchange
one person picks a value for X and publishes the pub1 value
another person picks their own exponent value, Y, and publishes the pub2 value
person 1 takes pub2 and their exponent and arrives at c
the other person does the same but with their respective bits and arrives at the same C value
the only way for a 3rd party to derive C given PUB1 and PUB2 is to guess X or Y
if your X or Y values are big enough that's just infeasible
gx mod p = a
const crypto = require('crypto');
// Generate Alice's keys...
const alice = crypto.createDiffieHellman(2048);
// or const alice = crypto.getDiffieHellman('modp14');
const alice_key = alice.generateKeys();
// a = (g ^ x) mod p
alice_key.getPublicKey() // a
alice_key.getGenerator() // g
alice_key.getPrivateKey() // x
alice_key.getPrime() // p
// shared secret
alice_key.computeSecret(bob.getPublicKey())
this is all that information I just described in node.js code
diffie hellman does not have many components
publishing your diffie hellman public key is really just posting the result of a math equation

shared secret
Diffie Hellman itself describe any encryption techniques.
It just lets two parties arrive at a shared number given each others public numbers.
Asymmetric cryptography solves the problem of having to transmit your symmteric key to the other party.
Your shared secret is the key you need to keep secret.
Your shared secret is the key to your symmetric cipher.
All modern cryptosystems are combinations of symmetric and asymmteric crypto.
diffie-hellman 1976
rsa 1977
(dsa 1991)
After the Diffie Hellman key exchange paper was published, the RSA algorithm was published.
RSA took DH a few steps further beyond key generation and exchange protocol.
It also defined an encryption and decryption mechanism.
This slide also honorably mentions DSA which is a signature only algorithm invented by the NSA in 1991

RSA Security Inc
founded, 1982
In 1982 RSA founded to commercialize public key encryption.
They negotiated use of the patent from MIT and set to work.
Note: The patent on RSA expired in september of 2000.
1983
hardware company
They felt they had a problem.
Customers could not understand their product.
Symmteric encryption is easy, a key locks and unlocks a door.
Asymmetric encryption is college level math.
There are mulitple keys, and multiple steps to using them.
Your key becomes a different key when used in someone else's lock.
Everyone shares a different secret.
RSA wanted to simpifly things. Put it on a chip. Ship it in a box.
It didn't work.
It would have been one of the most complicated single chip design by a factor of 10
it came off the line and didn't work at all
1985
software company
They shifted away from chip making and focused on licensing the
technology in other products. Your email would be protected by RSA and
there would be a sticker on the box for your email program, RSA Inside.
CT = PT e mod n
PT = CT D mod n
public key (e,n)
private key (d)
This is the RSA algorithm.
RSA is different from diffie-hellman in that it doesn't rely on the shared secret model.
RSA specifies a key generation routine, which I'm not describing here.
RSA comes with encryption and decryption operations.
You would just generate a random string of data.
Then you encrypt that small bit of data using the RSA public key of your recipient.
That random string of data is the key to your symmetric cipher.
The recipient recovers the symmetric key using their private key, and decrypts the data packet.
symmetric
plain text
key
encipher
cipher text
decipher
key
plain text
asymmetric
plain text
public key
encipher
cipher text
decipher
private key
plain text
Laid out like this you can see why one is called asymmetric.
The most encounterable implementation of asymmetric crypto is in email.
You would take someone else's public key and encrypt a message only they could decrypt.
When you do that, if you still want to make the message readable by you - say in your sent folder - you encrypt two copies. One with their public key, and one with yours.
The recipient takes their private key and deciphers the data to recover it.
sign & verify
plain text
private key
sign
signature
verify
public key
plain text
Another feature of RSA is the signature and verification routines.
Sign and verify are the reverse of what I just described.
Instead of you encrypting a message for me using my public key, I encrypt a message for you using my private key.
You then verify I sent the message by decrypting the signature with my public key.
Only someone with my private key could make a signature that is verified with my public key.
sign and verify example
const crypto = require('crypto'); const fs = require('fs')
var private_key = fs.readFileSync('./4096_private.dat')
var public_key = fs.readFileSync('./4096.pub')
var message = 'secret message'
var sign = crypto.createSign('RSA-SHA256')
sign.update(message)
var signature = sign.sign(private_key, 'hex')
var verify = crypto.createVerify('RSA-SHA256')
verify.update(message)
assert.equal(verify.verify(public_key, signature, 'hex'), true)
Here is what I just talked about as code in nodejs.
You load the keys, from disk. You have a message string.
You create a sign object and update the object with the message,
you call the sign method and pass your private key
You send your message, your signature, and your public key to the other party
the other party can create a verify object, update it with the message
then verify the message using the public key and the signature
generate keys
# generate private key
openssl genrsa -out 4096_private.dat 4096
# generate public key
openssl rsa -in 4096_private.dat -pubout > 4096.pub
node core doesn't let you create rsa keys
it expects you to have run the openssl command and use static keys
1989
lotus notes
Back to the story...
In 1989 RSA is licensed to be used in Lotus Notes.
They wanted to use a combination of RSA and DES for the encryption but the NSA would not allow them to export DES.
So the RSA people invented the RC-2 cipher at two strengths, 64bit and 40 bit.

const c = require('crypto') // es6... (e_e)
c.getCiphers()
// (partial results)
[ "aes128","aes192","aes256","blowfish",
"camellia128","camellia192","camellia256","cast",
"des","des3","desx","idea",
"rc2",
"rc2-40-cbc",
"rc2-64-cbc",
"rc4",
"rc4-40",
"seed" ]
Remember this slide where I show you how to list the ciphers?
Notice the 40 after RC2 and RC4? Those are export strengths.
That is the fingerprints of the politics of the early 90s baked into your node dot js
See the 256 on aes? Those are comparable numbers. 41 is twice as strong as 40, 42 twice 41 and so on up to 256.
If the fight against strong encryption is lost you will see the numbers in getCiphers get smaller
1991
pgp
we're kind of blasting through the timeline here because you would not believe how long it took for them to write and release this software
but pgp version 1.0 released using a combination of RSA and a symmetric cipher called bassomatic
yes from the saturday night live sketch

1992, pgp v2
version 2 used stronger RSA keys and a new symmetric cipher called idea
or international data encryption algorithm that used a 128 bit key and was invented in germany
idea was patented but free for non commercial use, the patent expired in 2012
but just a month later the San Jose customs office opens up a formal criminal investigation
regarding the illegal export of a munitions without a license
then in 1997 the case closes with no charges filed
it's all just threats and intimidation
I had a hard time researching hard concrete details about this talk because there is very little in the way of publicly available court proceedings
You can't find a listing of what was and wasn't considered illegal at the time because it was entirely at the discretion of opaque government entities that would swing back and forth their interpretation of the current state of affairs
the law was being practiced through secret letters and memos
key escrow
so rewind a bit...
it's 1993 so the whole time they are investigating email and software people for their strong encryption the government is pushing their solution for all this mess they have created
the solution is key escrow,
embodied in a device called the clipper chip
a clipper chip or something like it would be built into your phone, and before you could make an encrypted connection with your 2nd party, a 3rd party would be given some or all of the symmetric keys to your encrypted communications

trust us
so if law enforcement needed the contents of an encrypted wiretap
(which would sound like a wall of hissing)
they could supoena the key from the 3rd party and get the information they wanted
the people proposing this idea constantly harp on this idea of "trust us, if you only knew what we knew"
well during this time we got some citizens to review the information the NSA is always teasing
the nsa will always come back with: "If you see what we see you would want us doing this, trust us."
it's bunk
the citizen review panel during this time came back with a big shrug about not much compelling evidence
nope
nobody wanted on this train, not commerce, not the public
not even after the government said consumers could choose who stored their keys
the big idea was that banks would keep them
imagine if your API services involved contacting a bank with every transaction
the real nail in the coffin for key escrow was that the implementations failed miserably under the smallest bit of scrutiny
on the first day looking researchers were able to bypass the mechanisms that enforced the key escow
the first crack meant waiting 40 minutes on hold while the connection was brute forced
and faster attacks appeared later
all of this was taking place in the media and the court of public opinion
the moment the news cycle shifted to the idea that the clipper chip is broken and key escrow doesn't work the government drops their pressure
liberalization
there is this whole period of liberalization after the clipper is hacked
1996 An executive order comes down that transfers control of crypto from munitions regulators to the commerce department, you just ask for certifications for internal distribution and you are generally granted them
1997 Banks are allowed unrestricted encryption access without key recovery, also you can export 56 bit crypto instead of 40 bit
1998 Al Gore is about to start his campaign for president and they issue a memo basically making it a free-for-all in terms of strength and streamlines the process for export approval
review
crypto is more than just the math, or key generation steps
it's the implementation of a set of protocols that define
key generation,
key distribution,
rings of trust and verification,
handshake protocols,
trusted and untrusted pipes
every step brings with it benefits and drawbacks
you can't just say "Oh I'll use RSA and AES" and leave it at that
all the parties have to agree on every detail or things don't work at all
future versions of software have to support the standard that created old messages or those old messages won't be readable
your encryption protocol also has to work in the real world, on untrusted networks, that time out... so every step in your protocol needs special attention paid as invisible changes in underlying configurations can leave your implementation weak
did your ISP change how packets are routed and now you are leaking your keys?
can your software handle untrusted networks or does it expect everyone to be law abiding
we trust our ISPs to not attack our connections, but that isn't the case for many internet users
Today
The FBI didn't ask Apple for some master key.
The FBI asked Apple to build a version of IOS that breaks their implementation.
Snoopers Charter in the UK would require you to log all your sessions, every piece of information for every handshake, did you download an icon? That's a unique session key and that needs to be logged and stored for half a year.
In Russia the new law is a year of retention and they are seizing hardware of vpn providers.
they are watching
This is what we are up against.
It is pervasive surveillance.
they will build arrays of antennas in backwater nowheres just to get better coverage of the sky
they are intercepting your data at almost every opportunity
you may trust your government at it's highest levels but many programs live in a gray area from previous administrations
just because the new better person is in the white house doesn't mean that general with the nasty motivation has been replaced
real-time attacks
they can attack your implementations in real-time
I wanted to do some live cracking in this talk but I couldn't make it not a waste of time
how many of you already spend a large portion of your lives sitting in front of tasks watching them go to 100% completion
I included code in the repo for the talk that lets you crack your own keys at different strengths so you can do this when there is more time
I will describe what it means to crack some keys
this is a machine built by the EFF to demonstrate how cheap it would be to crack DES
this is how you attack symmteric cryptography, with custom hardware
the hardware searches the key space and compares the output to a set of parameters
if you are expecting to see ascii text you would pipe the output to a detector software and review all the tries that had only ascii
in the repo for this talk I have a DES cracking routine that will do 30,000 keys per second on my fast desktop
this device did 90 billion
cracking DH
diffie-hellman key exchange
g x mod p = public
Diffie Hellman is super easy to crack in that all you have to do is guess X
You verify you got X correct by running the equation, and if you get the public number you got X correct
g 1 mod p = 998
g 2 mod p = 861
g 3 mod p = 320
g 4 mod p = 118
most everyone uses the same g and p values in diffie hellman
there are many possible numbers for G and P, but people correctly use the standard numbers for the different bit sizes
they are literally published as a standard, diffie hellman group 14 specifies 2048 bit values for g and p
this means means you can precompute all the values for X ahead of time
so when you see a public number in the wild you may have already computed the X value and saved it somewhere

super computers
our largest supercomputers spend a lot of time doing this work
odds are some of your most mundane traffic has been cracked by some of the most sophisticated computing rigs, then dropped on the floor
cracking rsa
PT = CT D mod n
private key (d)
public key (n)
n = p * q
d = φ(p, q)
cracking RSA is about attacking the key generation routine
I didn't describe the key generation, but it all starts with two big prime numbers p and q
you get your public key by mutiplying them together, and the strength comes from the fact that there are only one p and q for your n
the p and q values are also fed into a function that outputs the private key
so if you can factor N and recover p and q, you can compute the value for D and start decoding traffic
The awful thing is that they don't even need to spend millions of dollars decrypting your stuff.
We transfer it in plaintext in trusted environments.
How many of your services are only secure once they hit nginx?

how can you help?
encrypt everything
in your standups at work ask your peers what are they're doing to encrypt customer data
then tell your customers that you are doing it, write a blog post about it
security is an afterthought to customers, try to educate them
if you are an indie dev, build encryption into your libraries and modules
publicize the fact that your communication layers are encrypted
make it easy for people to load their keys, give them examples
in fact, make it mandatory, throw an error if they don't encrypt
imagine if node dropped support for unencrypted http
tomorrow

I'm not sure really. I just kind of wanted to have this slide and linger a bit...
Quantum Computers are a real thing and they will eventually crack meaningful RSA keys
Bad guys are collecting all the traffic they see and waiting for the day the skeleton key comes along that opens it up.
An email from 10 years ago is still relevant if you are still mad about the thing that happened 10 years ago
All you can do is try to not be an easy target.
 Some contractor has to pour over your data and find your alternate email address and world of warcraft username
If you make it a little bit harder for them, they will give up
If literally everyone used Tor and PGP and OTR Messaging our intelligence services would invest more money in human resources instead of mass surveillance.
If it wasn't so easy for them to scoop up everything and call it a good day's work they would have better intelligence instead of the deluge of plaintext we provide them


.
%blog_name%
%blog_description%
%content%
Email sent %date% @ %time%
For any requests, please contact
%admin_email%
.


use Red::Column; use Red::Attr::Column; use Red::ResultSeq; use Red::Phaser; unit module Red::Traits; =head2 Red::Traits =head3 is temp #| This trait marks the corresponding table of the #| model as TEMPORARY (so it only exists for the time #| of Red being connected to the database). multi trait_mod:<is>(Mu:U $model, Bool :$temp! --> Empty) { $model.^temp = True; } =head3 is rs-class #| This trait defines the name of the class to be used as #| ResultSet to this model. multi trait_mod:<is>(Mu:U $model, Str:D :$rs-class! --> Empty) { trait_mod:<is>($model, :rs-class(::($rs-class))) } =head3 is rs-class #| This trait defines the class to be used as ResultSet to this model. multi trait_mod:<is>(Mu:U $model, Mu:U :$rs-class! --> Empty) { die "{$rs-class.^name} should do the Red::ResultSeq role" unless $rs-class ~~ Red::ResultSeq; my role RSClass[Mu:U $rclass] { method rs-class(|) { $rclass<> } } $model.HOW does RSClass[$rs-class]; } =head3 is nullable #| This trait configures all model attributes (columns) to be NULLABLE by default, when used as `is nullable`. #| Without this trait applied, default for every attribute (column) is NOT NULL, #| though it can be stated explicitly with writing `is !nullable` for the model. #| Defaults can be overridden using `is nullable` or `is !nullable` for the attribute (column) itself. multi trait_mod:<is>(Mu:U $model, Bool :$nullable! --> Empty) { $model.HOW does role :: { method default-nullable(|) { $nullable } } } =head3 is column #| Defines the attribute as a column without any custom configuration. multi trait_mod:<is>(Attribute $attr, Bool :$column! --> Empty) is export { trait_mod:<is>($attr, :column{}) if $column } =head3 is column #| Defines the attribute as a column receiving a string to be used as the column name. multi trait_mod:<is>(Attribute $attr, Str :$column! --> Empty) is export { trait_mod:<is>($attr, :column{:name($column)}) if $column } =head3 is unique #| This trait marks an attribute (column) as UNIQUE. multi trait_mod:<is>(Attribute $attr, Bool :$unique! where $_ == True --> Empty) is export { trait_mod:<is>($attr, :column{:unique}) } =head3 is unique #| This trait marks an attribute (column) as UNIQUE receiving data to ve used on column definition. multi trait_mod:<is>(Attribute $attr, :$unique! --> Empty) is export { trait_mod:<is>($attr, :column{:$unique}) } =head3 is id #| This trait marks an attribute (column) as SQL PRIMARY KEY. multi trait_mod:<is>(Attribute $attr, Bool :$id! where $_ == True --> Empty) is export { trait_mod:<is>($attr, :column{:id, :!nullable}) } =head3 is serial #| This trait marks an attribute (column) as SQL PRIMARY KEY with SERIAL data type, which #| means it auto-increments on each insertion. multi trait_mod:<is>(Attribute $attr, Bool :$serial! where $_ == True --> Empty) is export { trait_mod:<is>($attr, :column{:id, :!nullable, :auto-increment}) } =head3 is column #| A generic trait used for customizing a column. It accepts a hash of Bool keys. #| Possible values include: #| * id - marks a column PRIMARY KEY #| * auto-increment - marks a column AUTO INCREMENT #| * nullable - marks a column as NULLABLE #| * TBD multi trait_mod:<is>(Attribute $attr, :%column! --> Empty) is export { if %column<references>:exists && (%column{<model-name model-type>.none}:exists) { die "On Red:api<2> references must declaire :model-name (or :model-type) and the references block must receive the model as reference" } $attr does Red::Attr::Column(%column); } multi trait_mod:<is>(Attribute $attr, :&referencing! --> Empty) is export { die 'On Red:api<2> ":model" is required on "is referencing"' } =head3 is referencing #| Trait that defines a reference receiving a code block, a model name, optional require string and nullable. multi trait_mod:<is>(Attribute $attr, :$referencing! (&referencing!, Str :$model!, Str :$require = $model, Bool :$nullable = True ) --> Empty) is export { trait_mod:<is>($attr, :column{ :$nullable, :references(&referencing), model-name => $model, :$require }) } =head3 is referencing #| Trait that defines a reference receiving a model name, a column name, and optional require string and nulabble. multi trait_mod:<is>(Attribute $attr, :$referencing! (Str :$model!, Str :$column!, Str :$require = $model, Bool :$nullable = True ) --> Empty) is export { trait_mod:<is>($attr, :column{ :$nullable, model-name => $model, column-name => $column, :$require }) } =head3 is referencing #| Trait that defines a reference receiving a code block, a model type object and an optional nullable. multi trait_mod:<is>(Attribute $attr, :$referencing! (&referencing!, Mu:U :$model!, Bool :$nullable = True ) --> Empty) is export { $model.^add_role: Red::Model; trait_mod:<is>($attr, :column{ :$nullable, :references(&referencing), model-type => $model }) } =head3 is referencing #| Trait that defines a reference receiving a model type object, a column name, and optional nulabble. multi trait_mod:<is>(Attribute $attr, :$referencing! (Mu:U :$model!, Str :$column!, Bool :$nullable = True ) --> Empty) is export { trait_mod:<is>($attr, :column{ :$nullable, model-type => $model, column-name => $column }) } =head3 is table #| This trait allows setting a custom name for a table corresponding to a model. #| For example, `model MyModel is table<custom_table_name> {}` will use `custom_table_name` #| as the name of the underlying database table. multi trait_mod:<is>(Mu:U $model, Str :$table! is copy where .chars > 0 --> Empty) { $model.HOW.^attributes.first({ .name eq '$!table' }).set_value($model.HOW, $table) } =head3 is relationship #| Trait that defines a relationship receiving a code block. multi trait_mod:<is>(Attribute $attr, :&relationship! --> Empty) is export { $attr.package.^add-relationship: $attr, &relationship } =head3 is relationship #| DEPRECATED: Trait that defines a relationship receiving 2 code blocks. multi trait_mod:<is>(Attribute $attr, :@relationship! where { .all ~~ Callable and .elems == 2 } --> Empty) is DEPRECATED is export { $attr.package.^add-relationship: $attr, |@relationship } =head3 is relationship #| Trait that defines a relationship receiving a code block, a model name, and opitionaly require string, optional, no-prefetch and has-one. multi trait_mod:<is>(Attribute $attr, :$relationship! (&relationship, Str :$model, Str :$require = $model, Bool :$optional, Bool :$no-prefetch, Bool :$has-one) --> Empty) is export { die "Please, use the has-one experimental feature (use Red <has-one>) to allow using it on relationships" if $has-one && !%Red::experimentals<has-one>; $attr.package.^add-relationship: $attr, &relationship, |(:$model with $model), |(:$require with $require), :$optional, :$no-prefetch, |(:$has-one if $has-one) } =head3 is relationship #| Trait that defines a relationship receiving a code block, a model type object, and opitionaly require string, optional, no-prefetch and has-one. multi trait_mod:<is>(Attribute $attr, :$relationship! (&relationship, Mu:U :$model!, Bool :$optional, Bool :$no-prefetch, Bool :$has-one) --> Empty) is export { die "Please, use the has-one experimental feature (use Red <has-one>) to allow using it on relationships" if $has-one && !%Red::experimentals<has-one>; $attr.package.^add-relationship: $attr, &relationship, :model-type($model), :$optional, :$no-prefetch, |(:$has-one if $has-one) } =head3 is relationship #| Trait that defines a relationship receiving a column name, a model name and opitionaly a require, optional, no-prefetch and has-one. multi trait_mod:<is>(Attribute $attr, :$relationship! (Str :$column!, Str :$model!, Str :$require = $model, Bool :$optional, Bool :$no-prefetch, Bool :$has-one) --> Empty) is export { die "Please, use the has-one experimental feature (use Red <has-one>) to allow using it on relationships" if $has-one && !%Red::experimentals<has-one>; $attr.package.^add-relationship: $attr, :$column, :$model, :$require, :$optional, :$no-prefetch, |(:$has-one if $has-one) } multi trait_mod:<is>(Attribute $attr, Callable :$relationship! ( @relationship! where *.elems == 2, Str :$model!, Str :$require = $model, Bool :$optional, Bool :$no-prefetch, Bool :$has-one) --> Empty) { die "Please, use the has-one experimental feature (use Red <has-one>) to allow using it on relationships" if $has-one && !%Red::experimentals<has-one>; $attr.package.^add-relationship: $attr, |@relationship, :$model, :$require, :$optional, :$no-prefetch, |(:$has-one if $has-one) } =head3 is before-create #| Trait to define a phaser to run before create a new record multi trait_mod:<is>(Method $m, :$before-create! --> Empty) { $m does BeforeCreate; } =head3 is after-create #| Trait to define a phaser to run after create a new record multi trait_mod:<is>(Method $m, :$after-create! --> Empty) { $m does AfterCreate; } =head3 is before-update #| Trait to define a phaser to run before update a record multi trait_mod:<is>(Method $m, :$before-update! --> Empty) { $m does BeforeUpdate; } =head3 is after-update #| Trait to define a phaser to run after update record multi trait_mod:<is>(Method $m, :$after-update! --> Empty) { $m does AfterUpdate; } =head3 is before-delete #| Trait to define a phaser to run before delete a record multi trait_mod:<is>(Method $m, :$before-delete! --> Empty) { $m does BeforeDelete; } =head3 is after-delete #| Trait to define a phaser to run after delete a record multi trait_mod:<is>(Method $m, :$after-delete! --> Empty) { $m does AfterDelete; } =head is sub-module #| Trait to transform subset into sub-model multi trait_mod:<is>($subset where { .HOW ~~ Metamodel::SubsetHOW }, Bool :$sub-model) { use MetamodelX::Red::SubModelHOW; $subset.HOW does MetamodelX::Red::SubModelHOW; $subset }


$db
$db : \System\Core\Database
Database object
Base class for operations on database tables.
__construct(\System\Core\Database\Database $db, string $entityClass)
Constructor, sets the db and entity class, inits fields/foreign fields.
| \System\Core\Database\Database | $db | |
| string | $entityClass |
addField(\System\Core\Database\TableField $field)
Adds a TableField object to the list of fields.
| \System\Core\Database\TableField | $field |
getRows(\System\Core\Database\QueryParams $params, $orderBy, $limit, $offset) : mixed
Get a selection of records, based on given conditions.
| \System\Core\Database\QueryParams | $params | |
| $orderBy | ||
| $limit | ||
| $offset |
Array with objects
updateRows(array|object $data, \System\Core\Database\QueryParams $where) : int
Updates one or more record in the table based on the given parameters.
| array|object | $data | Array or object with fields and values for UPDATE clause |
| \System\Core\Database\QueryParams | $where | Array with fields and values for WHERE clause |
Number of affected rows
deleteRows(\System\Core\Database\QueryParams $params) : int
Remove some rows based on given conditions.
| \System\Core\Database\QueryParams | $params | Object with fields and values for where clause |
Number of affected rows
countRows(\System\Core\Database\QueryParams $params) : void
Counts the number of rows matching the given conditions.
| \System\Core\Database\QueryParams | $params | Object with fields and values for where clause |
getSimpleList(string $valueField, $keyField, \System\Core\Database\QueryParams $params) : mixed
Returns a key-value list of all records, using the given fields as key and value, for use in a select.
| string | $valueField | Name of field for value |
| $keyField | ||
| \System\Core\Database\QueryParams | $params | Conditions for where, default empty |
Array with list
checkJoinExists(mixed $new_join, mixed $joins) : bool
Check if a table name is already used for a join.
| mixed | $new_join | Array with foreign field information, by ref |
| mixed | $joins | Array with list of currently joined foreign fields, by ref |
True: table is already joined


PeptideShaker tries to map the detected peptides for a given protein onto the PDB structure of the protein using Jmol. If multiple PDB structures exist for a protein, it is up to the user to select the desired structure. If there are more than one chain in the structure, the user also decides which of the chains to use.
Note that the amino acid sequence covered by the PDB structure is (almost) always shorter than the complete protein
sequence. The overlap and the sequence coverage obtained is shown for each chain in the PDB Chains table.
Due to the often limited coverage provided by the PDB structure, not all peptides can be mapped to the structure. The
peptides that can be mapped are annotated with PDB in the Peptides table to the lower left and shown in
green on the 3D structure model. The currently selected peptide is shown in blue.
By default the structure rotates slowly around the structure's y-axis. The feature can be turned on or off
from the menu in the upper right corner of the structure panel.
On the same menu there are also options for choosing between two different structure model types, and an
option for turning on/off the modification labels.
To manually rotate the structure simply left click it and drag it in the wanted direction. Zooming is achieved either by holding down middle mouse key and dragging up or down, or by the use of the scroll wheel. Moving the structure is done by double clicking and dragging the left mouse button.
Additional interaction with the structure is achieved by right clicking in the structure panel. For further details on how to modify the structure see Jmol. Jmol is an open-source Java viewer for chemical structures, here used to display protein structures.
For additional information about the PDB structure click the link in the PDB Matches table.


Returns the creation time from
Returns the action type
Returns the information of author
Returns the identifier author
Returns the author platform
Returns the author url
Returns the creation time
Returns the event type
Returns the geo location
Checks is comment event
Checks is delete object
Checks is new object
Checks is post event
Checks is restore object
Checks is share event
Checks is update object
Returns the creation time from original post
Returns the identifier of the author of the original post
Returns the author url of the original post
Returns the text of the shared post
Returns the identifier signer user
Returns the rule tags
Returns the text of the post
Returns the event URL
Returns the custom data
Returns the attachments
Checks for the presence of attachments
Checks whether the context of some of these types
Returns data for JSON
Generated using TypeDoc
Returns custom tag


#nav(__SID__,__ACT__)
schema.org Laboratory
MusicPlaylist Laboratory
LocalBusiness Laboratory
Exit
#kyojoLab/githubRibbon


| DOSE: |
3.5 tablets |
oral |
MDMA |
(pill / tablet) |
I'm only 14 years old but I know how to party. This occured in the summer time with my boyfriend of 11 months. He had been going to raves for a while and the word was just spreading around town about this new drug and this new club, so I thought that I would give it a try. I figured it would have been like shrooms or acid but it was the most intense feeling I have ever had. We got to this club and as soon as I walked in the door, there were people coming up to me touching me welcoming me and giving me light shows. I never was really much of a dancer but the music just grew inside of me and started making me dance. We just started buying them there and splitting them piece by piece until we were so wired that I just couldn't stop smiling and I was on top of the world.
After that night I was looped for about 3-4 days and I couldn't stop thinking about E. So my boyfriend and I started to abuse it, taking it Friday and Saturday night every single weekend for about 3 months until I got scared for what was going on with my body (backpain and confusion) so I started researching it on the net and now I am more educated about it. I haven't done it for about a month now but we plan to stick to 'every now and then' for a treat whenever we go to raves. Esctacy is the best drug I have ever done. I have made so many connections with people when our eyes meet and we're having a conversation and it feels as if our souls are talking to each other. I respect so many people now and love so many people not just because of rollin' with each other. I'll be doing e when Im 60.
Peace.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Introducing Vico
Published 2011-04-28 11:32 by martin
Hi, and welcome to Vico.
Vico is the result of a personal itch. My eyes want a beautiful looking, modern Mac text editor. But my fingers just want vi.
Vico is inspired by some great software out there. The vi/vim command set beats anything in terms of efficiency and speed. TextMate has set a new standard in many ways, and the bundle community is still thriving.
There are still key features missing in Vico, but I think it's already very useful. Try out the latest development release and tell me what you think in the comments.
I hope you'll like Vico.
Comments
at 2011-05-01 14:40 theFreelanceDesigner said:
The app is beautiful. Incredible job.
at 2011-05-01 16:30 Scott said:
Wow, I've wanted an editor like this for so long! Great work.
at 2011-05-01 16:38 Henry said:
This app is on the road to perfection, I love having vi looking good with the search-as-you-type explorer tab, just excellent. Keep going, I'd buy it for the record.
at 2011-05-01 17:08 Jalf said:
Hi, just checked out Vico, and I love it. Keep up the good work!
at 2011-05-01 17:12 ivan said:
Nice! I would consider even paying for this -- you have found a great niche... vim lovers.
suggestion: Drag a file onto Vico does nothing, dradding onlto a text buffer pastes the path. I think the "standard" behaviour is to Open.
PS: Five day trial sucks... give me like 10 days or something ;)
at 2011-05-01 17:17 Dave Paola said:
Looks awesome. Great work. Quick note: ESC-:q while in split-pane mode will close vico completely, rather than merely quitting the current buffer.
Other than that, I love it.
at 2011-05-01 17:27 naneau said:
Great work, loving it!
Sure, there's a still couple of rough edges here and there, but it feels great already. Will buy if it goes on sale!
at 2011-05-01 17:37 Darren_N said:
This is very cool, I'm pretty excited as this could be a good dropin replacement for MacVim + Janus. What's your roadmap like and also your plans for release? Any idea on the pricing?
Again, this looks really cool, lots of positive feedback on Hacker News.
at 2011-05-01 17:38 Jarin Udom said:
This is baller. After playing with this for a bit I just realized how much I miss TextMate's tab triggers. I hope this project goes forward, especially if it either a) gets open sourced, or b) gets other developers on board. I'd hate to see it go the TextMate route of getting popular and then taking forever for new releases to come out because the sole developer gets burnt out.
I have a few suggestions that are the only things (as of right now) keeping me from giving it a go as my primary editor:
- Command line launching (like the "mate" or "mvim" commands)
- Ability to edit tmbundles within the app
- Downloading tmbundles seems to duplicate tab triggers
- Snippets still use hard tabs even if you've selected space-based indentation (soft tabs)
- Hitting backspace when you are using soft tabs and are in the "indentation part of the line" should go back that number of spaces instead of just one
Keep up the good work, this is epic.
at 2011-05-01 17:56 martin said:
@ivan, dragging a file on to the vico icon opens it for me.
@dave paola, sure, :q behaviour should be revisited
@darren_n, I'll post a roadmap in the next couple of days.
@jarin udom, there is a command line tool already, just create a link from the application bundle, in Contents/MacOS/vicotool
, to ~/bin/vico
or similar. I haven't got around to making an installer for it yet. As for your other suggestions, they are noted.
at 2011-05-01 17:58 Jarin Udom said:
Ah, got it!
ln -s /Applications/Vico.app/Contents/MacOS/vicotool /usr/local/bin/vico
Thanks :)
at 2011-05-01 18:11 JeanLeHacker said:
Great App!!! Have been using MacVim, but this looks waaaay better. Is there a way to customize further, like a .vimrc file?
Greetings from Belgium,
Jan
at 2011-05-01 18:15 Paul said:
Beautiful start man !!! Keeping my fingers croseed for Textmate replacement :-)
at 2011-05-01 18:24 Jochen said:
very nice app!
could you maybe add the "Show invisibles" feature from TextMate where you see the tabs you typed?
at 2011-05-01 18:27 martin said:
@Jochen try :set list
, use :set nolist
to turn it off, or just use preferences -> general -> show invisibles
at 2011-05-01 19:04 Josh Kerr said:
Would love to see a little padding between the text and the edges of the windows. I don't like how my text rides right up against the tops, sides and bottom of the window.
at 2011-05-01 19:17 Martin Schuerrer said:
Wow this is awesome. Please either start selling it (and continue working on it unlike macromates on textmate) or open source it.
One thing really bugs me and that is that windows/tabs don't work like in vim. For example I use tabs in vim to quickly switch between two different layouts, and with vico opening a file with command-t opens a new tab instead of switching the current split window.
also command-t could be improved, to work like peepopen or vim's command-t.
at 2011-05-01 12:29 Marcin said:
Hi,
Vico, looks interesting. Please add RSS feed to this blog so I can follow it.


 As a film critic, I can rarely afford myself the luxury of taking the time to see a movie twice, but I made an exception for EVERYONE SAYS I LOVE YOU. Why confine the pleasure to a single setting?
Allen attracts talent to his projects, but this show has even more than normal. Alan Alda plays liberal Democrat Bob and Goldie Hawn plays his guilty liberal Democrat wife Steffi. Their daughter DJ (Natasha Lyonne), who is the narrator, explains that the difference is that her mom's parents were rich whereas Bob's were not, hence her mom's guilt.  Bob and Steffi have an expensive and extensive place in Manhattan, complete with a maid.
There is a black sheep in the family. Their son Scott (Lukas Haas) has become a conservative Republican. "How did I end up with a kid on the other end of the political spectrum?" laments Bob. "How did I fail?" Woody loves poking fun at everyone. The way Scott's conservative values are "resolved" in the film will undoubtedly infuriate some, but I thought it was hilarious.
Steffi's best scene shows her addressing a group of prison guards and presenting her solution to prison unrest. She tells the stunned guards her idea for the prisoners, "I say give them an opportunity to decorate their own cells with their personal interior decorator." Nothing comes of this visit other than that she makes good friends with soon to be released prisoner Charles Ferry (Tim Roth). This friendship will test her resolve as a do-gooder. Yes, you feel sorry for a vicious criminal, but would you want daughter to marry one?
Drew Barrymore is picture perfect as their innocent daughter Skylar. She is engaged to boyishly handsome Edward Norton as Holden. They have many delightful scenes together including the one where she accidentally swallows the ring he gives her.
Woody is the star of the picture as Steffi's ex-husband Joe. As usual, Woody plays the part of someone who has trouble with relationships. As Joe puts it, "In a relationship, it is better to be the leaver than the leavee." His last relationship has gone sour and he has been left. "I should go to Paris and jump off of the Eiffel Tower," he tells Steffi and Bob. "If I took the Concorde, I could be dead three hours earlier." Woody plays his usual character obsessed with death -- Mahler, but funnier.
Eventually Woody will go to Venice and meet a married woman named Von, played by the ever gorgeous Julia Roberts. They will have an affair that will be the centerpiece of the story. My favorite line of his comes after she compliments him on his love making abilities. Being overly debonair, he confesses, "There was a moment there when I stroked when I should have hickeyed."
All of the above is great comedy, but it is the musical part that makes the film stand out. The film is like a traditional musical and unlike EVITA in that the musical numbers are frequent, but most of the lines are spoken, not sung.
The musical numbers come from great old songs and are sung by the cast. Some of them have weak voices, with Woody's being the smallest, but all of them manage to provide happiness and mirth.
It is hard to choose which of the musical numbers I liked best. Many of them rely on choruses. When they are looking at the X-ray for the lost ring, for example, the doctor breaks into song as do the nurses and the patients.
Easily the most imaginative musical number happens in the funeral parlor. The dead relative gets out of his casket looking exactly like one of the ghosts from Disneyland's Haunted Mansion. He gathers other ghosts to sing, "Enjoy yourself, enjoy yourself, it's later than you think." Soon Bob and Steffi and all the kids are singing and dancing with them.
The film is exceedingly beautiful, certainly the most attractive movie Allen has ever made. His usual cinematographer, Carlo Di Palma, can be credited. Talking the colors from a Central Park in fall that has never looked lovelier, he uses that color palette for all of the photography. Unlike typical Allen films we also get location shots in such picturesque locales as Paris and Venice.
 You leave the theater with a song in your heart and wanting to repeat the experience again.
EVERYONE SAYS I LOVE YOU runs 1:41. It is rated R for a single bad word from a rap song. Other than that, the film is pure PG. As soon the rap guy appears, cover your kids ears for a few seconds and the singer and his one profanity will be history. With that precaution you can take kids of any age to see the film although those under nine will probably not be interested. I strongly recommend the picture to you and give it *** 1/2.
**** = A must see film. *** = Excellent show. Look for it. ** = Average movie. Kind of enjoyable. * = Poor show. Don't waste your money. 0 = Totally and painfully unbearable picture.
REVIEW WRITTEN ON: January 31, 1997
Opinions expressed are mine and not meant to reflect my employer's.
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


Dragonback Mountains [ae35], mountain, in Oleg's Folly, wilderness
Last updated Turn #147
Dragonback Mountains [ae35], mountain, in Oleg's Folly, wilderness
------------------------------------------------------------------------
0: Garrison [gy2x], garrison, Pen, with two peasants guards Dragonback
0: Mountains [ae35].
Province controlled by Oleg's Refuge [g4z], castle, in Dragonback
Mountains [ae34]
Ruled by Catherina [k7z], count
Border closed.
Entrance fees:
Routes leaving Dragonback Mountains:
North, plain, to Wildhorse Plains [ad35], 7 days
Garrison [ag4c], garrison, Pen, with ten workers
Border closed.
East, plain, to Wildhorse Plains [ae36], 7 days
South, plain, to Wildhorse Plains [af35], 7 days
West, mountain, to Dragonback Mountains [ae34], 10 days
Garrison [ep8h], garrison, Pen, with ten sailors, ten peasants
Border closed.
Seen here:
Garrison [gy2x], garrison, Pen, with two peasants
Stack of cyclops [cc7s], cyclops, number: 13
Stack of nazgul [jo4u], nazgul, number: 3
Stack of nazgul [ao5y], nazgul, number: 2


Got Telefucked? Find a new class to enroll in here, based on your past courses and intended major! Let's get started.


Sidebar demo page. Limitations, for now: no interactivity; not using the same font as the player (Avenir). toggle editing set last saved date/time


{% extends "layout.html" %} {% block page_title %} GOV.UK - Benefit debt repayments {% endblock %} {% block content %} {% include "includes/phase_banner.html" %} Beta prototype pages GOV.UK guide on benefit overpayments Benefit debt repayment service Declaration Start of the ePayments service Worldpay card select Worldpay payment details Successful payment Feedback (exit survey) Thank you Payment pages for unsuccessful transactions Payment unsuccessful Payment declined Payment cancelled Reference number invalid Back {% endblock %}


Welcome to our page. We are launching soon!
 SCIENCE APPLICATIONSRISK Climate change is expected to exacerbate heat-related extremes that impact human health and environmental and ecological systems. Your challenge is to build a tool that uses Earth Observations (EO), crowdsourced data, and models to provide warnings about potential impacts of these events, along with guidance on mitigation measures.


Enter revenues
Load old inventory
Add sandwich
Add ingredient
Prep checklist
Home
Loading
Not account yet?
Already a member? Sign in:
Change Location
| What you're bringing | Inventory | Max need |
|---|
| What to bring | Inventory |
|---|
| Number | Unit | Item Name |
|---|
Cash details
| Unit | Item Name | Storage Location | Units per dollar | In use? |
|---|
| Sandwich | Ingredient |
|---|
Ingredients:
| Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday |
|---|
| What to prep | Inventory |
|---|


Companies list
Company 1
Company 2
Company 3
Company 4
Company 5
Company 6
Company 7
Company 8
Company 9
Company 10
Product 1
Product 2
Product 3
Product 4
Product 5
Product 6
Product 7
Product 8
Product 9
Product 10
This is the best product
Width: 100cm
Height: 200cm
Length: 500cm
Read the manual
See more
No matching items found.
Check the filter settings.
Loading companies.
Please wait...


HTTP service
The HTTP service provides functions get, post, put and delete.
The service is a built-in service and can be imported with
url rockscript.io/http
get
Performs a HTTP get request.
Example
var http = system.import('rockscript.io/http');
var servicePort = 9898;
var response = http.get({
url: 'http://localhost:' + servicePort + '/?p1=v1&p2=v2',
headers: {
Header-One: 'singlevalue'
Header-Two: ['array', 'value']
}
});
Input parameters
As input, this service function expects exactly 1 parameter which must be a JSON object. The following properties can be specified:
| Property name | Required? | Description |
|---|---|---|
url |
Required | The full url including the protocol up to the query parameters |
headers |
Optional | A JSON object where the property names are the header names. The value can be a string or an array of strings. (Note that array literals are not yet supported) |
A body is not supported in the get
service function.
Return value
A response object looks like this
{ status: 200,
headers: {
Date: "Thu, 30 Nov 2017 14:48:30 GMT",
Content-Type: "application/json"
},
body: {
some: "JSON"
}
}
If the Content-Type is application/json
, then the body is parsed as such and
made available as an object so that it can be navigated.
Failures
A request failes when no connection could be established or when the connection gets terminated prematurely.
By default, an unexpected response status is not a failure.
If you want to non-expected response status messages to be considered
as a failure, specify the property expectedStatus
in the
request like this
var http = system.import('rockscript.io/http');
var response = http.get({
url: 'http://...',
expectedStatus: 200
});
This request will now fail if the response status is not 200.
Retries
In case of a failure, the default is to retry 3 times with incremental backoff. You can customize the retry policy. Please ask for details how to do that in a Github issue.
post
Same as for service function get
, except for the body
property.
In a post, you can specify a body.
Example
var http = system.import('rockscript.io/http');
var response = http.post({
url: 'http://localhost/orders',
headers: {
Content-Type: application/json
},
body: {
item: 'Donut',
amount: 6
}
});
put
Same as post (with body property)
delete
Same as get (without body property)


{% extends 'base.html' %} {% block content %} Hey {{ profile }} Bots are taking over are you in r out Register » Edit Profile (current) Add Bots Tone Bot Edit Tone Bot Joy Settings Anger Settings Sadness Settings Disgust Settings Fear Settings Faq Bot Nav item Nav item again Culture Bot Cultue Settings Dashboard Label Something else Label Something else Label Something else Label Something else Get Started by choosing a option within the side bar {% include 'footer.html' %} {% endblock content %}
Bots are taking over are you in r out
Register »
Get Started by choosing a option within the side bar


| Interface and Description |
|---|
| mondrian.olap.CellFormatter
Use
CellFormatter . This interface
exists for temporary backwards compatibility and will be removed
in mondrian-4.0. |
| mondrian.spi.DataSourceChangeListener
Will be removed with Mondrian 4.0.
|
| mondrian.olap.MemberFormatter
Use
MemberFormatter . This interface
exists for temporary backwards compatibility and will be removed
in mondrian-4.0. |
| mondrian.olap.PropertyFormatter
Use
PropertyFormatter . This interface
exists for temporary backwards compatibility and will be removed
in mondrian-4.0. |
| Class and Description |
|---|
| mondrian.rolap.HighCardSqlTupleReader
Deprecated for Mondrian 4.0.
|
| mondrian.rolap.Target
Deprecated for Mondrian 4.0.
|
| Enum and Description |
|---|
| mondrian.olap.LevelType
Will be replaced with
Level.Type
before mondrian-4.0. |
| Field and Description |
|---|
| mondrian.olap.Property.CONTRIBUTING_CHILDREN
Property is not used and will be removed in mondrian-4.0;
use
SchemaReader.getParentChildContributingChildren(mondrian.olap.Member, mondrian.olap.Hierarchy, java.util.List<mondrian.olap.Member>) |
| mondrian.olap.MondrianProperties.EnableCacheHitCounters
This property is no longer used, and will be removed in
mondrian-4.0.
|
| Constructor and Description |
|---|
| mondrian.rolap.RolapEvaluatorRoot(Statement) |
| mondrian.rolap.RolapSchema(SchemaKey, ByteString, RolapConnection)
for tests only!
|


Zonal annual means, 1880-present, updated through most recent complete year. The annual mean has been 14 ° since 1880 until 2020.


Ezekiel Kigbo - Presentations
2019
- July, 16: Vue i18n
2017
- Dec, 07: Glossing over Ethereum
- April, 18: Isomorphic React
2016
- May 31: NodeJS Meetup: Why I node
- May 04: RRR: ByteIntoIT
- Apr 20: ConnectExpo: Prototyping public services - Lessons learned
- Feb 14: PauseFest: Re-building government websites
2015
- Dec 09: Paper to pixels
- Nov 17: Smarter public service
- Oct 27: NJC Observations
2013
- Nov 07: Accessibility


{% extends "confirm.html" %} {% load i18n %} {% block question %}
{% trans "Do you really want to delete this review?" %}


There are two kinds of filters in OBO-Edit: term filters and link filters.
Term filters match ontology "terms". Things like relations, instances and classes can be matched by a term filter.
Link filters match links between terms. This does not mean that a link filter matches two terms. A link filter will never match any terms. It will only match links between terms.
A link can be thought of as a triplet that consists of a child term, a relationship type, and a parent term. This guide uses the following notation for describing a link: [child term] --[type]--> [parent term]. An is_a link between "organ growth" and "growth" would be written as: "organ growth" --is_a--> "growth".


Github Open Issues Finder
Copy and paste a Github repo link here
Get Issues
Request did not go through. Try a full Github URL in the form of https://github.com/
user
/
repo
This repo has no issues because it had loving parents.


Selby Webb
Logout
SuccessField
Companies
Overview
Products
Influencers
Overview
Earnings
Products
Settings
Company
Users
Earnings
Sales
Products
Requests
Influencers
Back to overview
Earnings
1. - 2. June 2016
1. - 2. June 2016
Period
1. - 7. June 2016
Total earnings
CHF 3,047.56
Total sales
236
Monthly view
Weeks view
Daily view


{% extends "base.html" %} {% block title %}
Medieval catalogues > SECULAR INSTITUTIONS: Secular Colleges > Sudbury > Bequest by Geoffrey Bryce, 1 April 1446
{% endif %}18 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


Digital Trend
Studio
(current)
Our Works
Blog
Contact
Contact Us
Let's talk about creative projects
Send Message


Pervez Musharraf is a Pakistani politician and a retired four-star army general who was the tenth President of Pakistan from 2001 until tendering resignation, to avoid impeachment, in 2008.
In 1961, at age of 18,Musharraf entered the prestigious Pakistan Military Academy at Kakul, in 1964, Musharraf graduated with a Bachelor's degree in his class of 29th PMA Long Course. He was commissioned in the artillery regiment as second lieutenant and posted near the Indo-Pakistan border, after joining the Navy Special Service Group, was stationed in East-Pakistan as a military advisor to East Pakistan Army.
After his resignation, Musharraf went to perform a holy pilgrimage to Makkah (Mecca). He then went on a speaking and lectureship tour through the Middle East, Europe, and United States. Chicago-based Embark LLC was one of the international public-relations firms trying to land Musharraf as a highly paid keynote speaker. According to Embark President David B. Wheeler, the speaking fee for Musharraf would be in the $150,000–200,000 range for a day plus jet and other V.I.P. arrangements on the ground. In 2011, he also lectured at the Carnegie Endowment for International Peace on politics and racism where he also authored and published a paper with George Perkvich.

Remember that mindsets can not be changed through force and coercion. No idea can ever be forcibly thrust upon any one.
I am not at all a politician. I don't think I'm cut out for politics. I am certainly not going to stand for election.


Thank you for visiting my portfolio, here you will find a list of apps I have currently made, both in the DBC course as well as outside of the program