Chapter 1 Basic Spectroscopies
Please scroll to the bottom to find a summary video on UV/vis and fluroescence spectroscopy.
1.1 UV/Vis
1.1.1 The Beer-Lambert Law
The intensity of incident light (\(I_0\)) passing through a sample falls exponentially, this is described by the Beer-Lambert Law. The empirical equation (equation (1.1), figure 1.1) implies that the probability of a photon being absorbed at any point is the same (much like first order kinetics), and the amount of the total absorption depends upon the the concentration of the sample, c, and the ‘path length’, l.
The amount of absorbance, A, is dependent upon the wavelength of the incident light, and the constant of proportionality, \(\varepsilon\) (here called the molar extinction coefficient), is consequently also wavelength dependent.
\[\begin{equation} \log \frac{I_0}{I}=A=\varepsilon cl \tag{1.1} \end{equation}\]
The wavelength of a particular value of the molar exctinction coefficient is often represted as a subscript, \(\varepsilon _\lambda\)
The Beer-Lambert law makes a number of assumptions, and this exponential decay of the intensity of light is an important factor.When using the Beer-Lambert law you consider the intensity of the incident radiation, there is an assumption that the intensity of the radiation reaching each part of the sample does not deviate much from this. Hence high absorbing samples tend to show strong deviation from the Beer-Lambert’s linear relationship.
The Beer-Lambert law also has to make a number of other ‘reasonable’ considerations:
- The solutions is well mixed, and absorbers are homogeneously distributed in solution.
- The absorbers do not scatter radiation (all particles will Rayleigh and Raman scatter but this is normally considerably less intense than absorption). Consequently solutions should be optically transparent as optically opaque solutions (such as colloidal solutions) have considerably stronger scattering.
- The absorbers acts independently of each other, this means solutions need to be at a reasonably low concentration (typically less than 0.01 M, or maybe even less depending on the species) so as to avoid electrostatic or \(\pi\) stacking interactions between the chromophores.This is in part important because light is only absorbed when the polarisation of the light is aligned with the transition dipole moment.
- The incident radiation is collimated, and each photon should pass through the same path length.
- The sample holder (cuvette) is optically ‘pure’ such that reflections are avoided (linked to the assumption above).
- The incident radiation is monochromatic, or at the very least has a band width more narrow than the band width of the absorbing transition (this is usually not an issue for molecular systems as bandwidths are usually 10s or more of nm wide, but for atomic or ion spectroscopy where bandwidths are <0.02 nm this is a factor which must be carefully considered.
- The incident radiation does not noticeably affect the concentration of the ground state, in other words the amount of excited states generated must be kept small as when we are talking about the absorption of a chromophore the concentration of that chromophore that appears in the Beer-Lambert equation is the ground state concentration.
- There is no measurable emission from the sample.
1.1.2 Using UV/Vis
These assumptions become important as we start to consider more complicated techniques than the most basic absorption spectrometery, however to ensure we are following these limits on the Beer-Lambert law it is rare for spectroscopists to work with sample absorbances above 0.1 (the point where ~20 % of the light is absorbed).
To do this either the path length (\(l\)) is reduced or the concentration (\(c\)) of the sample is reduced.
UV/vis is simplest to use on solution based systems as one of the assumptions of the Beer-Lambert law is that the transition dipole moments are randomly aligned. The use of non-randomly aligned transition dipole moments is the basis of the technique linear dichroism (LD) 2.1.
1.1.3 The UV/Vis instrument
Figure 1.2 shows the schematic of a ‘dual beam’ UV/Vis spectrophotometer, this would be a higher end instrument.
The most basic versions (and the version you may have used in the lab) are single beam instruments, whereby \(I_0\) is determined indirectly. Some instruments use a ‘blank path’ which does not allow for a ‘blank’ reference cuvette, to allow light to reach the detector, in this case it is a single detector for both paths, with the beam of light beign selected by use of a rotaing chopper. Historically photodiodes were used as the detectors, however the use of ‘echelle’ (2-dimensional) diffraction gratings have increasingly meant that CCDs may be used for optaining the whole spectrum instantly.
The use of a heating block for the sample means that a range of interesting studies may occur from the melting of DNA and proteins (see CH30129/CH30217 notes on hypochromicity), and the temperature dependent release of drug molecules. However, this feature again is only on higher end instruments.
1.2 Fluorimeters
Figure 1.3 shows the schematic of higher end fluorimeter with scanning monochromators for both the excitation and emission. Some lower end instruments may use band pass filters to select a ‘single’ excitation (and emission) wavelength, or else use a diode as an excitation source. The university uses both of these instrument types in the teaching labs, with the diode instrument using a two dimensional echelle grating such that the full emission spectrum is recorded ‘instantly’. The CCD detector is considerably less sensitive than the PMT, but the cost is considerably lower and so they are used in some instruments.
The detectors in fluorescence spectrometers are easily over saturated (figure @ref{fig:sat}), therefore it is important to ensure that the response remains within the linear region of the instrument. To do this there are a number of ways that the signal may be reduced, these include:
- reducing the applied potential on the PMT
- closing either the emission and/or excitation slits
- reducing the concentration of the sample
- reducing the path length of the sample
- reducing the integration time (the time each ‘sample’ is gathered for)
- change the excitation wavelength
PMTs are less sensitive at long wavelengths and so ‘corrections’ are usually used in this wavelength regime.
Emission light is recorded at 90º to the incident wavelength radiation to minimise optical artifacts and to separate out the emission from the intense excitation beam. The are usually scattering signals in the emission (from both Raman (inelastically scattered) and frequency halved elastic scattering) these are usually only observed at low fluorescence intensities.
1.2.1 Emission fluorimetery
When we are talking about fluorescence spectroscopy we are talking about emitted photons, whether they are fluorescent photons, or phosphorescent photons.
| ‘Allowed transitions’ | ||
| Singlet-singlet absorption Singlet-singlet emission |
fluorescence |
\(S_0 + h \nu \longrightarrow S_1\) \(S_1 \longrightarrow S_0 + h \nu '\) |
| ‘Forbidden transitions’ | ||
| Singlet-triplet absorption Triplet-singlet emission |
phosphorescence |
\(S_0 + h \nu \longrightarrow T_1\) \(T_1 \longrightarrow S_0 + h \nu ''\) |
| ‘Other transitions’ | ||
| Internal conversion |
(vibrational relaxation) (vibrational relaxation) |
\(S_1 \longrightarrow S_0 + heat\) \(S_1 \longrightarrow T_1 + heat\) \(T_1 \longrightarrow S_0 + heat\) |
| Other pathways | ||
| Quenching of excited state Chemistry from excited state |
\(S_1 + Q \longrightarrow S_0 + Q +heat\) \(S_1 + Q \longrightarrow S_0 + Q^\ast +heat\) \(T_1 + Q \longrightarrow S_0 + Q +heat\) \(T_1 + Q \longrightarrow S_0 + Q^\ast +heat\) \(S_1 \longrightarrow\) new/changed molecule |
Any process that has either emission or scattering of a photon can be seen in the fluorimeter, however scatting is usually considerably weaker and is only an issue at very low emission intensities.
When we think about fluorescence spectroscopy it is usually steady state (constant illumination)emission mode that we think of. In this technique the excitation wavelength is fixed and the emission is scanned.
It is a difficult technique to quantify, and so if comparing samples the same settings (slit width, PMT voltage, \(\lambda_{ex}\), scan rate) should be used, and the absorbance of each sample noted at \(\lambda_{ex}\).
The wavelength of emmission is calibrated using a water Raman. This is useful as it doesn’t matter the purity of the water, and any excitation wavelength may be used (although if 350 nm (\(\lambda\)max,em = 397 nm) is available this is frequently used for no other reason than tradition). The Raman is an inelastic scattering and so always appears at a well defined wavelength (equation @ref{eq:waterRaman}).
\[\begin{equation} \frac{1}{\lambda_{\textrm{em, µm}}}=\frac{1}{\lambda_{\textrm{ex, µm}}}-0.340 \textrm{ µm}^{-1} \tag{1.2} \end{equation}\]
Figure @ref{fig:slitwidth} shows the effect of slit width of the appearance of a water Raman calibration spectrum, the peak is Gaussian in profile and relatively intense so narrow slit widths may be used. This peak can overlay on the emission spectrum, but can manually be removed if necessary.
Increasing the integration time improves the signal to noise ratio, but the signal only improves relative to the noise in a \(\sqrt{n}\) ratio, so as the integration time increases by four, the signal to noise ratio increases by 2.
1.2.2 Excitation spectroscopy
More on this technique will be discussed later in the course, but it is a measure of how the emission intensity varies with the excitaiton (or absorbance) of the sample - the technique can show where the excited states in a system come from.
What we do know though is that the emission intensity is very dependent upon the wavelength you excite, as the amount of absorption (and therefore excited states generated) is very dependent on wavelength (figure @ref{fig:normabs}).
The intensity of the source varies a lot with wavelength, and so the excitation detector is used to ‘normalise’ the emission intensity against the intensity of light generating the excited states.
1.3 Questions
- Why are emission spectra recorded at 90º to the incident light?
- emission intensity is most intense normal (at 90º) to the excitation source
- 90º is the best angle to separate the Raman signal from the emission signal
- it is a good angle to ensure no excitation light makes it to the emission detector
- it reduces the amount to reabsorption of light by minimising the path length
- it maximises internal reflections, ensuring the most emission from the sample
- Which of the following is not an assumption of the Beer-Lambert law?
- The absorbing molecules must be homogeneously distributed in solution
- Incident radiation must be normal to the transition dipole of the molecule
- The absorbers must act independently of each other
- The incident radiation must be collimated (parallel rays) and pass through the same path length
- The incident radiation must have a band width that is more narrow than the absorbing transition
- The intensity of incident light must be low to ensure the population of an excited state is negligible
- Why does a molecule absorb light; what conditions are needed?
- only the energy gap ΔE matters
- only the intensity of light matters, with enough light it will always absorb
- the extinction coefficient governs how much light will be absorbed
- the energy gap and polarisation of the electromagnetic field matter
- the solvent molecules must be aligned with the magnetic field
- only the polarisation of the magnetic field matters
1.4 Answers
- Why are emission spectra recorded at 90º to the incident light?
- emission intensity is most intense normal (at 90º) to the excitation source
- Fluorescence should be isotropic in the steady state so no angle has a higher emission intensity
- 90º is the best angle to separate the Raman signal from the emission signal
- Raman like emission is isotropic - the only way you can separate them is using time resolved methods, but Raman is usually considerably less intense than the emission signal.
- it is a good angle to ensure no excitation light makes it to the emission detector
- Incident light passes straight through, any other angle which can separate this would be fine, but 90º is usually used because of the shape of the cuvettes (square)
- it reduces the amount to reabsorption of light by minimising the path length
- This is called the inner filter effect - it can be a problem, and recording at 90º will minimise the path length but the best thing to do is ensure that the concentration, or intensity of incident light (slit width) is reduced
- it maximises internal reflections, ensuring the most emission from the sample
- In a square cuvette it should minimise the effect of internal reflections, this is not something we want as we are assuming the light only travels through the sample once
- Which of the following is not an assumption of the Beer-Lambert law?
- The absorbing molecules must be homogeneously distributed in solution
- Incident radiation must be normal to the transition dipole of the molecule
- This statement is the exact opposite of being homogeneously distributed, only molecules with the transition dipole moment aligned correctly will absorb, but it shouldn’t be that all molecules are aligned
- The absorbers must act independently of each other d.The incident radiation must be collimated (parallel rays) and pass through the same path length
- The incident radiation must have a band width that is more narrow than the absorbing transition
- The intensity of incident light must be low to ensure the population of an excited state is negligible
- Why does a molecule absorb light; what conditions are needed?
- only the energy gap ΔE matters
- It matters, it isn’t the only thing…
- only the intensity of light matters, with enough light it will always absorb
- Nope… more power doesn’t work, although you can get some cool non-linear two photon effects with enough power it still has to be the right energy
- the extinction coefficient governs how much light will be absorbed
- Yes, but it isn’t a condition required
- the energy gap and polarisation of the electromagnetic field matter
- Yes the energy gap (wavelength) needs to be appropriate, but the transition dipole moment of that transition of the chromophore must be aligned with the polarisation of the EM light
- the solvent molecules must be aligned with the magnetic field
- The solvent has nothing to do with the transition dipole, it may affect ΔE
- only the polarisation of the magnetic field matters
- Again, it matters that the transition dipole moment and the polarisation of light are matched but for UV/Vis the incident light should be unpolarised


Reading through last week’s iOSDevWeekly I came across Doctest, an exciting new project that aims to make Swift documentation testable.
The idea is, you can run swift-doctest
giving it a bunch of .swift files and then it evaluates code blocks in your documentation, returning test results for the given conditions.
It turns out that you can run swift-doctest
on Markdown files too. What if, we could inject a nice little swift-doctest
every time jekyll renders our static website? That way we can test codeblocks in blog posts and even get it done automatically on every build.
Install DocTest
Via Homebrew:
$ brew install swiftdocorg/formulae/swift-doctest
Or Manually:
$ git clone https://github.com/SwiftDocOrg/DocTest
$ cd DocTest
$ make install
Jekyll Hook
note: these are my first 6 lines of Ruby, please be gentle with me
# Put this in a file called swift-doctest.rb on a _plugins folder in your blog root foolder
Jekyll::Hooks.register :posts, :pre_render do |post|
if post.data['doctest'] == true
value = %x( echo;echo 'swift-doctest for #{post.path}';swift-doctest #{post.path}; echo;)
puts value
end
end
This Jekyl Hook runs every time your site is built, before the .md files get rendered to .html files. I put it at this point so that I can do something more sophisticated in the future by probably injecting some html to show me the failed test results.
In order to enable swift-doctest for a post, add doctest: true
to the post’s front matter.
Take it for a spin
Start a codeblock with ```swift doctest and then, add an annotation in the format => (Type) = (Value)
, to test the expected type and value of the expression:
struct User {
let name: String
}
let user = User(name: "Foo")
let anotherUser = User(name: "Bar")
user.name == anotherUser.name // => Bool = true
Now if you run bundle exec jekyll serve
to build and serve your site, the terminal will print a failed test in the TAP format
...
swift-doctest for <path_to_your_blog>/_posts/<blog_post_filename>.md
TAP version 13
1..2
not ok 1 - `user.name == anotherUser.name` produces `Bool = false`, expected `Bool = true`
---
column: 37
file: <path_to_your_blog>/_posts/<blog_post_filename>.md
line: 6
...
...
Nice! If you just change the example to:
struct User {
let name: String
}
let user = User(name: "Foo")
let anotherUser = User(name: "Bar")
user.name == anotherUser.name // => Bool = false
And just save the file, you will see:
...
swift-doctest for <path_to_your_blog>/_posts/<blog_post_filename>.md
TAP version 13
1..1
ok 1 - `user.name == anotherUser.name` produces `Bool = false`
---
column: 36
file: <path_to_your_blog>/_posts/<blog_post_filename>.md
line: 6
...
...
Conclusion
That’s all you need in order to enable testing for Swift codeblocks in your Jekyll site!
Keep your eyes peeled for further updates to the very promising Doctest since it’s still on its early days.
Feel free to contact me or tweet to me on Twitter if you have any additional tips or feedback.
Thanks!


Frequently Asked Questions
Some common questions about Joda-Time are answered here.
- What does "Illegal instant due to time zone offset transition" mean?
- Are the time-zone rules are out of date?
- Does Joda-Time support the 2007 US and Canada time zone rules?
- Why is the offset for a time-zone different to the JDK?
- How do I calculate the difference between two dates?
- What is ISO8601?
- Why is ISO8601 the default?
- How are times calculated internally?
- Why limit to the number of milliseconds in a long?
- What date range is supported?
- What about sub-millisecond accuracy?
- How well does it perform?
- Does it support multi-threading?
- Are leap seconds supported?
- There are lots of classes, do I need to learn them all?
- Why reimplement TimeZone?
- What is with the name 'joda'?
- How do you pronounce 'joda'?
What does 'Illegal instant due to time zone offset transition' mean?
Joda-Time only allows the key classes to store valid date-times. For example, 31st February is not a valid date so it can't be stored (except in Partial).
The same principle of valid date-times applies to daylight savings time (DST). In many places DST is used, where the local clock moves forward by an hour in spring and back by an hour in autumn/fall. This means that in spring, there is a "gap" where a local time does not exist.
The error "Illegal instant due to time zone offset transition" refers to this gap. It means that your application tried to create a date-time inside the gap - a time that did not exist. Since Joda-Time objects must be valid, this is not allowed.
Possible solutions may be as follows:
Use LocalDateTime, as all local date-times are valid.
When converting a LocalDate to a DateTime, then use toDateTimeAsStartOfDay() as this handles and manages any gaps.
When parsing, use parseLocalDateTime() if the string being parsed has no time-zone.
Not all cases of this error have a simple solution. Hopefully this FAQ has explained what the error means allowing you to work out what the correct solution will be.
Are the time-zone rules out of date?
Joda-Time releases only occur infrequently. But time-zone changes happen all the time. As such, it may well be that the rules are out of date.
Between the Joda-Time releases, it is your responsibility to update the jar file with the latest time-zone rules. You must update both the JDK and Joda-Time rules to the same version at the same time to avoid problems. See the update time-zone rules guide for more details.
Does Joda-Time support the 2007 US and Canada time zone rules?
The time zone rules occur in three key places, your operating system, the JDK and Joda-Time. To be sure of hitting no issues, you should ensure that all three of these have been updated.
Version 1.5 of Joda-Time contains all the daylight savings rule updates for the 2007 US change. For earlier versions of Joda-Time the situation is more complex:
If your application only uses the major time zones of the US, then you need Joda-Time 1.2 or later. If your application also uses the major time zones of Canada, then you need Joda-Time 1.2.1 or later. If your application uses the minor time zones of the US or Canada, then you need Joda-Time 1.4 or later. For Bermuda (Atlantic/Bermuda) you need Joda-Time 1.4 or later. For the Bahamas (America/Nassau) you need Joda-Time 1.5.
For any future, or similar time zone change, you can upgrade your Joda-Time jar by following these instructions.
Why is the offset for a time-zone different to the JDK?
There are two main reasons for this.
The first reason is that both the JDK and Joda-Time have time-zone data files. It is important to keep both up to date and in sync if you want to compare the offset between the two.
The second reason affects date-times before the modern time-zone system was introduced. The time-zone data is obtained from the time-zone database. The database contains information on "Local Mean Time" (LMT) which is the local time that would have been observed at the location following the Sun's movements.
Joda-Time uses the LMT information for all times prior to the first time-zone offset being chosen in a location. By contrast, the JDK ignores the LMT information. As such, the time-zone offset returned by the JDK and Joda-Time are different for date-times before the modern time-zone system.
How do I calculate the difference between two dates?
This question has more than one answer! If you just want the number of whole days between two dates, then you can use the new Days class in version 1.4 of Joda-Time.
Days d = Days.daysBetween(startDate, endDate); int days = d.getDays();
If however you want to calculate the number of days, weeks, months and years between the two dates, then you need a Period. By default, this will split the difference between the two datetimes into parts, such as "1 month, 2 weeks, 4 days and 7 hours".
Period p = new Period(startDate, endDate);
Period p = new Period(startDate, endDate, PeriodType.yearMonthDay());
For more info, consult the period guide.
What is ISO-8601?
Historically, every country has found their own solution to measuring time. This has often been political and religious. To simplify the problem, especially in the realm of computer data transfer, the ISO-8601 standard was founded.
The ISO standard defines a framework for passing dates and times between computer systems in a standard way. The standard uses the proleptic Gregorian calendar. This makes it fully compatible with the calendar system used in most of the world after 1582. The standard warns that it may only be used to represent dates before 1582 'by mutual agreement'.
The standard defines twelve months January to December numbered 1 to 12 and seven days Monday to Sunday, numbered 1 to 7. In addition it defines the first week of the year as the first week to have most of its days in the new year. This can result in the first week of a year starting in the previous year and the last week ending in the following year.
The key point about ISO-8601 is that it is a framework for dates not an absolute single definition. The most common form is YYYY-MM-DDTHH:MM:SS.SSSZ, in other words: year-month-day letter 'T' hour:minute:second fractions letter 'Z'.
Why is ISO8601 the default?
Dates and times can be a localization nightmare (or should that be localisation...). Often political, geographic and religious factors have come into play. We wanted to avoid these factors if possible.
The ISO8601 standard is a good choice because it is a standard designed for computer data transfer and developed by a standards body. It is also a good choice because it is compatible with the calendar system used by most businesses worldwide today. Finally, it is a good choice as it forces API users to think about the decision they make if they require non-ISO or historically accurate calendar systems.
How are times calculated internally?
The main time interface is ReadableInstant. All classes that implement this interface, such as DateTime, store time as a single long value representing milliseconds. The epoch of the definition is 1970-01-01T00:00:00Z, which is the same as the JDK time definition and usage. Querying a field, such as year or hour, will calculate the value from the millisecond instant.
A secondary time interface is ReadablePartial. Classes implementing this interface store data in two ways. The 'local' classes, such as LocalDate and LocalTime store the number of milliseconds from 1970 without a time zone. All other implementations, such as YearMonthDay and TimeOfDay, store time as one int value for each field.
Why limit to the number of milliseconds in a long?
There are three main reasons for using a single long value to store the time.
- Compatibility - being compatible with the JDK makes conversion simpler
- Performance - a primitive value enables fast calculations, whereas alternatives generally involve lots of expensive object creation
- Big enough - the range provided by a millisecond based solution is big enough for most needs
What date range is supported?
The range supported is -292,269,054 to 292,277,023. In other words, roughly +/- 290 million years to millisecond precision.
If you want a date outside this range, ask yourself if you really want millisecond precision. In reality, dates this far in the past or future should only be stored as years - anything else is meaningless.
What about sub-millisecond accuracy?
Joda-Time does not support accuracy of times below millisecond. Physics defines time scales down to 5E-44 secs. The only way to accurately record these sorts of times is using the BigInteger class. This would severely compromise the performance of the whole API for a very limited use.
How well does it perform?
Joda-Time is designed for performance. Compared to java.util.Calendar, java.text.SimpleDateFormat, and java.util.TimeZone, nearly all equivalent operations in Joda-Time are faster. The significant exceptions are operations to get or set an individual field.
Calling "get" on java.util.Calendar is very fast because it doesn't do any work. Calendar calculates all fields in advance, even if many of those fields you won't need. Calendar's set method is fast because it defers calculations until later. Calling Calendar.get after calling Calendar.set forces all the field values to be re-calculated. Calling Joda's DateTime.get method after calling DateTime.set only performs the minimum amount of calculations, and the pair is faster than Calendar.
Joda-Time also allocates very few temporary objects during operations, and performs almost no thread synchronization. In systems that are heavily multi-threaded or use a lot of memory, Calendar, SimpleDateFormat, and TimeZone can become bottlenecks. When the Joda-Time classes are used instead, the bottlenecks go away.
Does it support multi-threading?
Every public class in Joda-Time is documented as being thread-safe or not. Joda-Time makes heavy use of the immutability design pattern, and all immutable classes in Joda-Time are thread-safe. Many mutable classes whose instances are not likely to be shared are not thread-safe, and are documented as such.
The most common multi-threading mistake made by Java programmers is in the use of SimpleDateFormat. Calling its format method on a shared instance by concurrent threads can produce bizarre results. All of Joda-Time's formatting classes are thread-safe and immutable.
Are leap seconds supported?
Joda-Time does not support leap seconds. Leap seconds can be supported by writing a new, specialized chronology, or by making a few enhancements to the existing ZonedChronology class. In either case, future versions of Joda-Time will not enable leap seconds by default. Most applications have no need for it, and it might have additional performance costs.
There are lots of classes, do I need to learn them all?
No, you only need to learn a small subset of the classes in the API. The Javadoc clearly indicates which packages contain user classes, and which contain implementation classes. In addition, there are a large number of package scoped classes, which are hidden in the Javadoc view anyway. Most applications will not need to directly import, extend or implement classes in the implementation packages. Basically, the API consists of the main package, plus the formatting package.
Why reimplement TimeZone?
The JDK TimeZone class varies in the support it can provide from one JDK release to another. The rules for determining Daylight Saving Time also change frequently. The Joda solution uses the international standard format for time zone rule data, and allows it to be updated independently of the timing of JDK releases. With perhaps 8 releases of the time zone rules per year this can be quite significant.
What is with the name 'joda'?
'Joda' is a short, four letter name, beginning with 'j' whose domain name was free. It is not an acronym.
How do you pronounce 'joda'?
The 'J' in 'Joda' is pronounced the same as the 'J' in 'Java'. The project is not capable of wielding a light saber and is thus pronounced differently.


--- author: Andre Charland categories: app date: '2010-11-25 00:38:05' link: http://blogs.nitobi.com/andre/index.php/2010/11/24/more-html5-features-now-in-ios-4-2/ permalink: /2010/11/25/more-html5-features-now-in-ios-4-2-2/ slug: more-html5-features-now-in-ios-4-2-2 status: publish title: More HTML5 features now in iOS 4.2 type: post format: html ---
HTML5 and the future are coming to a mobile browser near you and faster than we may have expected. Over on Maximiliano Firtman's blog he talks in detail about some of the new features available in Safari in iOS 4.2.
*Accelerometer
*Gyroscope support through the DeviceOrientation API
*WebSockets API from HTML5
*Updated HTML5 Form Support
*Partial XHR-2 Support
*Print Support
*New JavaScript data types
*New DOM events
*Enhanced SVG and Canvas support
Here's a demo of the Accelerometer working on an iPhone in Safari that I found on the ReadWriteWeb's write up on the new HTML5 features.
See from a 4.2 iOS device here
Obviously since PhoneGap leverages webkit on the device your PhoneGap based apps will get acces to these great new features too. Quit doubting web technologies and start thinking cross platform!


Call Us +234 817 1750 304
Careers
Login
Email
Alumni
Facebook
Benue State University, Makurdi
About BSU
ABOUT US
Brief History
Campus Structure
Our Mission
Philosophy
GAZETTED LAW
BSU Gazetted Law 2020
CONTACT US
Our Contacts
GOVERNANCE
Governing Council
Principal Officers
Deans / Directors
Heads of Departments
Coordinators of Units
E-Payment
Academics
Academic Matters
BSU Anthem
E-Payment Platform
Institutional Repository
BSU Journals
Scholars with Highest Citations
Transcript Application Procedure
Transcript Application
Academic Calendar
Gallery
General Studies
Tuition Fees
Library
BSU Library
National Library
Cambridge Journals
Google Scholar
Alumni
Alumni Website
Alumni Registration
Alumni Basic Form
Admissions
Undergraduate
ADMISSIONS
E-payment platform
Post UTME/DE Results
List of Approved Banks
Check Admission Status
Upload Documents (Remedial)
Upload Documents (PUTME)
Admission letter/Screening Forms
Check PUTME Scores
APPLICATIONS
E-payment platform
Post UTME/DE
Postgraduate
Centre for Continuing Education
Preliminary Science
Apply for Transcript
Check PUTME Scores
Graduate Degrees
Dean's Office
PG Application
Admissions/Courses
Statutes of PG School
Prospectus
Centres/Faculties/Departments
Centres/Directorates
Cefter BSU
Advancement/Linkages
Centre for Gender Studies
Entrepreneurship Studies
Works/Maintenance
Health Center
Consultancy Unit
Academic Affairs
Students Affairs
Academic Planning / Quality Assurance
Centre for Counselling and Human Development
Research Management
Sports Unit
Audit
ICT Directorate
Peace and Development Studies
Faculties/Departments
General Studies (GST)
Faculty of Education
Vocational and Technical Education
Curriculum and Teaching
Educational Foundation
Human Kinetics & Health Education
Faculty of Arts
English
History
Linguistic/Languages
Religion and Cultural Studies
Philosophy
Theatre Arts
BEJOMALS Journal
College of Health Sciences
History
Prospectus
Principal Officers
College News
Faculty of BAMS
Departments
HODs
Faculty of Clinical Sciences
Departments
HODs
Faculty of Law
Law
Public Law
Private Law
Commercial Law
Intl Law & Jurisprudence
Mgt Science
Accounting
Business Management
Faculty of Science
Chemistry
Biology
Physics
Math/Computer Science
Social Science
Economics
Sociology
Mass Communication
Psychology
Political Science
Enviromental Science
Geography
Urban & Regional Planning
E-Resources
GAZETTED LAW
BSU Gazetted Law 2020
REPOSITORY
Institutional Repository
JOURNALS
BSU Journals
DOWNLOADABLES
BSU Anthem
Mobilization Form
Conference Attendance Form
Staff Exit Form
ICT Trainig Form
Alumni Basic Information Form
Guarantors' Undertaking Form
CCHD Biodata Form
Guide to ICT & Portal Operations
CHS
CHS Students/Guarantor Undertaking Form A
CHS Students/Guarantor Undertaking Form B
OER
EagleScan
The University
About Us
Brief History
Campus Structure
Our Mission
Philosophy
GAZETTED LAW
BSU Gazetted Law 2020
Contact Us
Our Contacts
Alumni
Alumni Website
Transcript Application
Governance
Governing Council
Principal Officers
Deans / Directors
Heads of Departments
Coordinators of Units
Academics
Scholars with Highest Citations
Transcript Application Procedure
Transcript Application
Academic Calendar
Gallery
General Studies
Tuition Fees
Alumni
Alumni Website
Alumni Registration
Alumni Basic Form
Admissions
Admissions
E-payment platform
Post UTME/DE Results
List of Approved Banks
Check Admission Status
Upload Documents (Remedial)
Upload Documents (PUTME)
Admission letter/Screening Forms
Check PUTME Scores
E-payment platform
Post UTME/DE
Postgraduate
Centre for Continuing Education
Preliminary Science
Apply for Transcript
Check PUTME Scores
Dean's Office
PG Application
Admissions/Courses
Statutes of PG School
Prospectus
Library
BSU Library
National Library
Nigeria Virtual Library
Cambridge Journals
Google Scholar
Centres/Faculties/Departments
General Studies (GST)
Faculty of Education
Vocational and Technical Education
Curriculum and Teaching
Educational Foundation
Human Kinetics & Health Education
Faculty of Arts
English
History
Linguistic/Languages
Religion and Cultural Studies
Philosophy
Theatre Arts
College of Health Sciences
History
Prospectus
Principal Officers
College News
Faculty of BAMS
Departments
HODs
Faculty of Clinical Sciences
Departments
HODs
Faculty of Law
Law
Law
Public Law
Private Law
Commercial Law
Intl Law & Jurisprudence
Mgt Science
Accounting
Business Management
Faculty of Science
Chemistry
Biology
Physics
Math/Computer Science
Social Science
Economics
Sociology
Mass Communication
Psychology
Political Science
Enviromental Science
Geography
Urban & Regional Planning
Centres/Directorates
Cefter BSU
Advancement/Linkages
Centre for Gender Studies
Entrepreneurship Studies
Works/Maintenance
Health Center
Consultancy Unit
Academic Affairs
Students Affairs
Academic Planning / Quality Assurance
Centre for Counselling and Human Development
Research Management
Sports Unit
Audit
ICT Directorate
Peace and Development Studies
E-Resources
Gazetted Law
BSU Gazetted Law 2020
Downloadables
Mobilization Form
Conference Attendance Form
Staff Exit Form
ICT Trainig Form
Alumni Basic Information Form
Guarantors' Undertaking Form
CCHD Biodata Form
Guide to ICT & Portal Operations
CHS
CHS Students/Guarantor Undertaking Form A
CHS Students/Guarantor Undertaking Form B
Education Needs
Complete Solution
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to read more...
Click here to Apply
Education Needs
Complete Solution
Education Needs
Complete Solution
Click here to read more...
Latest News/Events
Admission into Postgraduate Programmes 2020/2021 Academic Session
Approved Adjusted First Semester Academic Calendar for 2019/2020 Academic Session (for Students)
Clearance for Postgraduate Certificates
BSU Hosts Carnegie African Diaspora Fellowship
Benue State University Anthem
Late fees Payment / Registration penalties for the 2019/2020 Academic Session
Sale of Admission forms for Preliminary Vocational and Technical Studies (PRE-VTS) Programme for 2020/2021 Session
Sale of Pre-Science Forms for the 2020/2021 Academic Session
Second Call: Procedure for payment and Registration for Admission Screening Exercise for the 2020/2021 Academic Session
Resumption of Postgraduate Students For Completion of 2018/2019 Academic Sessionn
University of Jos Applauds Benue State Government for Selecting Prof. Tor Iorapuu as the New Vice Chancellor
Release of Admission/Change of Course into Quota-Regulated ourses (LL.B, MBBS and B.SC. Nursing) Courses for the 2019/2020 Academic Session
Procedure for payment and Registration for Admission Screening Exercise for the 2020/2021 Academic Session
Read More
11
Jul 2021
Academic Calendar
Mon, 1st March, 2021 – Fri, 12th March, 2021
Reg of Fresh Students/Orientation (2 Weeks)
Mon, 8th March, 2021 – Fri, 12th March, 2021
Reg of Returning Students (1 Week)
Monday, 8th March, 2021
Departmental Board meets on Second Semester (2018/2019) results of Undergraduate Students (2 weeks after Reg)
View Previous Calendars
mute
max volume
play
stop
repeat
BSU Anthem
Benue State University Anthem (Lyrics)
Download Anthem
IMPORTANT FACTS
Programmes
11
Courses
360
Faculties
9
Departments
48
Awards & Scholars
Best Performing Alumni
Name of Alumni Here...
Alumni Website
CEFTER Awards
Book
VIEW DETAILS
Highest Citation Scholars
Book
VIEW DETAILS
2014/2015 Best Students
Book
VIEW DETAILS
SUBSCRIBE
TO OUR NEWSLETTER
SUBSCRIBE


If you have problems playing videos inline, please refresh your page.
This slide deck is a single web-page with lots of linked videos which can confuse the browser cache.
13.1.1: understanding-data-pipeline-context
13.2.1: sessionization-and-state
13.3.1: cloud-examples-ec2
13.3.2: cloud-examples-gce


Canvas Exercise
Click on the canvas below to set the position of the plane.
Once the plane position is set, bombs will be released from the plane
clear canvas
pause
restore
restart


Maui helicopter tours are a great way to see the island from a different perspective and have a fun adventure. If you have never been on a helicopter before, this is a great place to do it.


Public Relations, Events, and Marketing Specialist focused on strategizing and actualizing earned publicity, paid social media, and branded events and activations.
Ready to start your next project or collaboration with me? That's great! Send an email to the address below or request to connect on LinkedIn.


Netrix editor is primarily an HTML editor. Beside the basic editing function it offers several advanced editing and helper functions. You can create simple editors, advanced text processing applications, or interactive displays. The internal format is HTML. It is extensible with private XML elements.
The basic text editing function are such as "Bold", "Italic", font family and color. These functions work in either direct or toggle mode. Binary functions, such as "Bold", are toggle functions. Applying the same command to an already formatted text returns to the other state.
Other basic functions, such as "Copy", "Paste", and "Cut" don't toggle. Simple buttons will work well. However, you have to take care the current functions 'availability'. For each method call Netrix provides the corresponding "Can" method. Hence, for "Copy" is a method "CanCopy".
One of the challenges you face as a developer is to synchronize the toolbars or ribbons with the current state at the cursor position. In this demo application we use a ribbon with either ToggleButton or regular Button element.
One crucial question is how to synchronize the toolbar or ribbon an when it's safe to issue the commands. First of all, Netrix works asynchronous during the load phase. Each loading process, invoked by any of the "Load" methods, is handled asyncrhonously internally. Any operation agaínst the control must wait for the "ReadyStateComplete" event. Once it is fired, the IsReady property is set to true.
Another crucial event is "UpdateUI". Any user operation, such as Key or Mouse, can change the caret's position and hence change the appearance of tool buttons. It's recommended to update all tools at once in this event only.
void _fontControl_ExecuteEvent(object sender, ExecuteEventArgs e) { // Toggle Buttons need to be wrapped if (CanToggle(_fontControl.Bold, HtmlCommand.Bold)) { EditorDocument.HtmlEditor.TextFormatting.ToggleBold(); return; }
The editor just need a call to ToggleBold. This method can be found in the HtmlTextFormatting class, exposed by the TextFormatting property.
The CanToggle method is a private helper method that takes the command invoked by the font control ( _fontControl.Bold) and the corresponding command from HtmlCommand enum. This enum contains an entry for all formatting and several element functions. It is used to ask Netrix whether a specific command is currently available.
bool CanToggle(RibbonLib.Interop.FontProperties prop, HtmlCommand check) { return (prop == RibbonLib.Interop.FontProperties.Set && EditorDocument.HtmlEditor.CommandStatus(check) != HtmlCommandInfo.Checked) || (_fontControl.Bold == RibbonLib.Interop.FontProperties.NotSet && EditorDocument.HtmlEditor.CommandStatus(check) != HtmlCommandInfo.Enabled); }
Netrix provides the CommandStatus method to check for a command's availability. A command can have several states, such as "Checked", "Enabled", or "Both". "Checked" means that the command is currently applied. In case of Bold this means the caret is with a text that is formatted bold (between <b> tags, actually). If it is possible to invoke the command, the method return "Enabled". Ususally, especially for toggle commands, the method returns "Both" (is active and can be invoked again).
In the example code the state of the ribbon's font control is synchronized with the Netrix control's state.
Using this, the ribbon handled the Netrix control's Bold feature. There is just one fuunction left. The toggle control on the ribbon's font control must stay in sync even if the user just moves the caret (not invoking any specific command). Here we use the UpdateUI event. In the example the is routed through the handler class, because the Netrix control resides in a separate window (to make it dockable). The handler looks like this:
_fontControl.Bold = CheckState(HtmlCommand.Bold);
The CheckState method contains the required logic:
RibbonLib.Interop.FontProperties CheckState(HtmlCommand cmd) { if (EditorDocument.HtmlEditor.CommandStatus(cmd) == HtmlCommandInfo.Checked || EditorDocument.HtmlEditor.CommandStatus(cmd) == HtmlCommandInfo.Both) { return RibbonLib.Interop.FontProperties.Set; } else { _fontControl.Bold = RibbonLib.Interop.FontProperties.NotSet; } if (EditorDocument.HtmlEditor.CommandStatus(cmd) != HtmlCommandInfo.Enabled && EditorDocument.HtmlEditor.CommandStatus(cmd) != HtmlCommandInfo.Both) { return RibbonLib.Interop.FontProperties.NotAvailable; } return RibbonLib.Interop.FontProperties.NotSet; }
Again the HtmlCommand enum is used to check the current state. In case the state is "Checked" or "Both" the toggle tool is set. In case it is not enabled the tool is disabled. Otherwise it's avaiable and not set. Some functions do not toggle. In those cases you can simply read the corresponding properties and set your tools accordingly:
_fontControl.Family = EditorDocument.HtmlEditor.TextFormatting.FontName; _fontControl.ForegroundColor = EditorDocument.HtmlEditor.TextFormatting.ForeColor; _fontControl.BackgroundColor = EditorDocument.HtmlEditor.TextFormatting.BackColor;
Internally all HTLM colors are properly translated to System.Drawing.Color objects.
Typical operations regarding paragraphs are alignment, adding ordered or unordered lists, or indent blocks. All these commands are applied as simple method calls. Again, it's recommended to check for the functions availability through the UpdateUI event as shown before. The example shows how to left align a paragraph:
void _buttonAlignLeft_ExecuteEvent(object sender, ExecuteEventArgs e) { EditorDocument.HtmlEditor.TextFormatting.SetAlignment(Alignment.Left); }
All method calls in the formatting classes uses the term "align". There is, however, a conflict between the alignment capabilites of styles (CSS), within block elements, such as table cells, and regular paragraphs. Hence the HtmlCommand enum uses for paragraphs the term "justify". Enabling of disabling the tools checks the CommandStatus method using the JustifyXXX entries of the enum,
Netrix comes with full support for search and replace opertions. Search is internally exposed through the "Find" method. Search and replace both have few options:
The search and replace algorithm takes care of HTML formatting automatically. However, if a word has been found with formatting within the word itself, and the whole word gets replaces, the formatting gets lost. The replace method takes pure text only.
In the example the NextWord event is used to sync a dialog with the current search (or replace) process:
private void HandleSearchAndReplace(bool replace) { SearchReplaceDialog.NextWord += new EventHandler(SearchReplaceDialog_NextWord); SearchReplaceDialog.FormClosed += new System.Windows.Forms.FormClosedEventHandler(SearchReplaceDialog_FormClosed); SearchReplaceDialog.Show(this); } void SearchReplaceDialog_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e) { if (SearchReplaceDialog.DialogResult == System.Windows.Forms.DialogResult.OK) { // last search before close SearchReplaceDialog_NextWord(sender, EventArgs.Empty); } SearchReplaceDialog = null; } void SearchReplaceDialog_NextWord(object sender, EventArgs e) { if (SearchReplaceDialog.UseReplace) { EditorDocument.HtmlEditor.ReplaceNext( SearchReplaceDialog.SearchFor, SearchReplaceDialog.ReplaceWith, SearchReplaceDialog.CaseSensitive, SearchReplaceDialog.WholeWord, SearchReplaceDialog.SearchUp); } else { EditorDocument.HtmlEditor.Find( SearchReplaceDialog.SearchFor, SearchReplaceDialog.CaseSensitive, SearchReplaceDialog.WholeWord, SearchReplaceDialog.SearchUp); } }
The several options provided to the editors "Find" as well as "ReplaceNext" methods are pulled from controls the dialog provides.
The search method does not handle anything. In case a word has been found the word is highlighted. Any commands, such as Delete, Copy, or formatting, applies against a highlighted fragment, if any.
The common editing functions work like any other functions. The are bound to hot keys internally. Hot keys can be suppressed and replaced by private once if required.
Undo and Redo is fully implemented. Moreover, you can:
Usually it's not necessary to implement anything using Undo. The call looks simple:
htmlEditor1.Undo();
Note: In the example application this is wrapped into a method that applies the command to either the Netrix editor or the code editor.


Sending Exceptions by Email
How to send one or more selection exception records via email using the Event Viewer module. Warning. You may be sending sensitive data over the Internet in clear text (not encrypted). Before sending your exception submission, please review the contents of your exception log to verify that no sensitive data is contained within it.
- Navigate to Admin > Event Viewer - OR - Navigate to a Log Viewer module.
- Expand the Viewer section.
- Locate the required exceptions. Filtering records by type such as General Exception can be useful. Note: If color coding is enabled, exceptions are colored red.
- Mark the check box beside each record to be emailed.
- Expand the Send Log Entries section.
- In the Email Address text box, enter one or more email addresses separated by a semi-colon ( ; ). E.g. host<EMAIL_ADDRESS>- Optional. In the Subject text box, enter a subject for the message. Leave blank to use "[Site Name] Exceptions".
- Optional. In the Message (optional) text box, enter a message.
- Click the Send Selected Entries button.
Sending Exceptions by Email


Access Control Commands and Options
from Pogo, Walt Kelly
The skunk watches for intruders and sprays.
Last update:
14-Oct-2011 18:37
UTC
Related Links
Commands and Options
Unless noted otherwise, further information about these ccommands is on the Access Control Support page.
- discard [ average avg ][ minimum min ] [ monitor prob ]
- Set the parameters of the rate control facility which protects the server from client abuse. If the limited flag is present in the ACL, packets that violate these limits are discarded. If, in addition, the kod flag is present, a kiss-o'-death packet is returned. See the Rate Management page for further information. The options are:
- average avg
- Specify the minimum average interpacket spacing (minimum average headway
time) in log2 s with default 3.
- minimum min
- Specify the minimum interpacket spacing (guard time) in seconds with default 2.
- monitor
- Specify the probability of being recorded for packets that overflow the MRU list size limit set by mru maxmem or mru maxdepth. This is a performance optimization for servers with aggregate arrivals of 1000 packets per second or more.
- restrict default [flag][...]
restrict source [flag][...]
restrict address [mask mask] [flag][...]
- The address argument expressed in dotted-quad form is the address of a host or network. Alternatively, the address argument can be a valid host DNS name. The mask argument expressed in IPv4 or IPv6 numeric address form defaults to all mask bits on, meaning that the address is treated as the address of an individual host. A default entry (address <IP_ADDRESS>, mask <IP_ADDRESS> for IPv4 and address :: mask :: for IPv6) is always the first entry in the list. restrict default, with no mask option, modifies both IPv4 and IPv6 default entries. restrict source configures a template restriction automatically added at runtime for each association, whether configured, ephemeral, or preemptible, and removed when the association is demobilized.
- Some flags have the effect to deny service, some have the effect to enable service and some are conditioned by other flags. The flags. are not orthogonal, in that more restrictive flags will often make less restrictive ones redundant. The flags that deny service are classed in two categories, those that restrict time service and those that restrict informational queries and attempts to do run-time reconfiguration of the server. One or more of the following flags may be specified:
-
- flake
- Discard received NTP packets with probability 0.1; that is, on average drop one packet in ten. This is for testing and amusement. The name comes from Bob Braden's flakeway, which once did a similar thing for early Internet testing.
- ignore
- Deny packets of all kinds, including ntpq and ntpdc queries.
- kod
- Send a kiss-o'-death (KoD) packet if the limited flag is present and a packet violates the rate limits established by the discard command. KoD packets are themselves rate limited for each source address separately. If the kod flag is used in a restriction which does not have the limited flag, no KoD responses will result.
- limited
- Deny time service if the packet violates the rate limits established by the discard command. This does not apply to ntpq and ntpdc queries.
- lowpriotrap
- Declare traps set by matching hosts to be low priority. The number of traps a server can maintain is limited (the current limit is 3). Traps are usually assigned on a first come, first served basis, with later trap requestors being denied service. This flag modifies the assignment algorithm by allowing low priority traps to be overridden by later requests for normal priority traps.
- mssntp
- Enable Microsoft Windows MS-SNTP authentication using Active Directory services. Note: Potential users should be aware that these services involve a TCP connection to another process that could potentially block, denying services to other users. Therefore, this flag should be used only for a dedicated server with no clients other than MS-SNTP.
- nomodify
- Deny ntpq and ntpdc queries which attempt to modify the state of the server (i.e., run time reconfiguration). Queries which return information are permitted.
- noquery
- Deny ntpq and ntpdc queries. Time service is not affected.
- nopeer
- Deny packets that might mobilize an association unless authenticated. This includes broadcast, symmetric-active and manycast server packets when a configured association does not exist. Note that this flag does not apply to packets that do not attempt to mobilize an association.
- noserve
- Deny all packets except ntpq and ntpdc queries.
- notrap
- Decline to provide mode 6 control message trap service to matching hosts. The trap service is a subsystem of the ntpdc control message protocol which is intended for use by remote event logging programs.
- notrust
- Deny packets that are not cryptographically authenticated. Note carefully how this flag interacts with the auth option of the enable and disable commands. If auth is enabled, which is the default, authentication is required for all packets that might mobilize an association. If auth is disabled, but the notrust flag is not present, an association can be mobilized whether or not authenticated. If auth is disabled, but the notrust flag is present, authentication is required only for the specified address/mask range.
- ntpport
- This is actually a match algorithm modifier, rather than a restriction
flag. Its presence causes the restriction entry to be matched only if the
source port in the packet is the standard NTP UDP port (123). A restrict line
containing ntpport is considered more specific than one with the
same address and mask, but lacking ntpport.
- version
- Deny packets that do not match the current NTP version.
- Default restriction list entries with the flags ignore, ntpport, for each of the local host's interface addresses are inserted into the table at startup to prevent the server from attempting to synchronize to its own time. A default entry is also always present, though if it is otherwise unconfigured; no flags are associated with the default entry (i.e., everything besides your own NTP server is unrestricted).


@()(implicit request: RequestHeader, flash: play.api.mvc.Flash)
@main("Maybe Authorized") {
You are neither required to be authenticated nor authorized to view this page.
If you are either authenticated or authorized, you can see that the respective information about your request is available:
- If you are not authenticated, the page is still reachable but there will be no username in the topbar.
- If you are authenticated but not authorized as admin, your username will be visible in the topbar.
- If you are authenticated and authorized as admin, your username will be visible in the topbar including a star that indicates your
Admin
capabilities.
}


Instrument Tables
| Stock # | Table Type Description | Dimensions | Your Price |
|---|---|---|---|
| SG-82-SS | Mid-Sized with Shelf | 16"D x 20"L x 34"H | $540.82 |
FEATURES: Stainless steel Steril-Gard™ construction eliminates full sub-tops where undesirable substances can collect Lightweight but strong Attractive design Easy to clean Soundproofed reinforcing channels for quiet use 3" rubber, double ball bearing casters for silent mobility Available in many sizes Available options: 3-4 sided 'top rails' available to prevent items from slipping off, See Stock #52 below. Stainless steel drawers or tote boxes may be mounted under top. Purchase stock # SG-EL to extend table height (NOT MRI safe.) Weight capacity example: SG-92-SS - 100 lbs. top shelf, 200 lbs. bottom shelf. NOTE: Be sure to look at Pedigo's "Utility Tables" which are somewhat similar to the "Instrument Tables" shown on this page.


I'm a sophomore studying Computer Science at Cornell University. My interests are in User Experience/User Design, Programming, and Web Design. Oh yeah, I'm also a big fan of horticulture! This is one of my many plants, Eric:
Recently, I've become more involved in an organization called Prisoner Express. The aim of this organization is to help prisoners by providing resources such as books, newsletters, lesson plans, and general mailings. It's an organization that I've found myself enjoying being a part of and one where I definitely plan on sticking through to the end.
I also have some plans in the works to teach/co-teach a class at the local middle school in Ithaca. It will either be on scratch based programming or something related to Anthropology.
This simple alexa skill gives you information about the next bus heading to your destination without having to unlock your phone and launch an app. Simply ask alexa when the next bus to {destination} is from {origin} and alexa will tell you if theres anything available. If there is, alexa notifies you that the next bus departs in X minutes from {bus_stop_location}. Inspiration for this app came from the fact that there have been many days I've been too lazy to check for the next bus on my iPhone. Instead, I created a script that would automate this task. Currently, I don't have any plans on continuing development of this project.
Comments


A British, Russian and American engineer were arguing about whose home country had the superior measurement system;
and so, they decided to hold a pie contest in which each contestant will use their own country's measurement units
to bake their own pie. However, in the end, the judges were not satisfied with any of the pies.
When inquired, the judges replied, "Precision is key, but there seemed to be a lack of it.
Perhaps the three of you were thinking of a different pie?" What pie could the judges be referring to?
The Yeast Dough
- 3.1g instant dry yeast
- 100ml warm milk (or warm water)
- 2.7g white sugar
- 2 eggs, at room temperature
- 1 tsp salt
- 200ml milk (or water), at room temperature
- 100g butter, melted
- ~600g all-purpose/plain/white flour
In a cup, stir warm milk, sugar and yeast together. Let stand until foamy for about 10 minutes.
In a big bowl, crack eggs, add sugar, salt, milk, melted butter and stir together. Add sifted flour, yeast mixture and knead the dough until it’s smooth.
Cover the bowl with wet cloth, put in a warm place and leave to rise for 1 hour. After that time, knead the dough again. Repeat this step one more time.
The Filling
- 310g fresh salmon, cut into small cubes
- 100g basmati or jasmine rice, cooked
- 270g mushrooms, sliced and fried
- 1 big onion, sliced and fried
- 4 eggs, cooked and chopped
- 2+2 Tbsp finely chopped dill and parsley
- salt and freshly ground black pepper
The Pancake
- 310ml full fat milk
- 50ml warm water
- 270g all-purpose flour
- 2 eggs
- a good pinch of salt
- 2 tbsp of sugar
- 2 tbsp of sunflower oil
- 3.1 tsp baking soda
- 2.7 tsp of lemon juice or vinegar
Break the eggs into a large bowl, add salt and sugar, whisk.
Add the oil and milk, whisk again.
Sift the flour into the bowl, whisk thoroughly.
Add warm water and whisk to incorporate any lumps.
Pour lemon juice or vinegar into a spoon with baking soda on it (to dissolve the soda), quickly add it into the batter and whisk a couple of times.
While the mixture is resting (it allows the ingredients to blend together better), heat the pan; grease the pan with some oil, if needed.
Evenly coat the pan with the batter. Cook about a minute, then flip the pancake and cook for 15-30 seconds more.
Keep prepared pancakes in a warm place.
The Glaze
- 1 egg yolk beaten with 2 Tbsp milk, 1/2 tsp salt and 1/2 tsp sugar
Assembling
On a floured surface, roll out the dough to approximately 27cm*31cm rectangular and 6mm thick. You can roll the dough on a piece of baking parchment, thus it’ll be much easier to transfer the pie on a baking tray; moreover, you need to turn the pie upside down-the sealing should be on the bottom.
Coat the rolled dough with the pancakes.
Place the egg and herbs mixture lengthways down the centre of the dough.
Then arrange the mushrooms and onion mixture on top.
Next, arrange rice. And the last layer-salmon.
Cover the filling with pancakes, shape it to make a rectangular.
Then, fold the dough and seal the edges.
Transfer the pie upside down to a baking tray.
Decorate with pastry trimmings, and cut two slits in the top with a sharp knife.
Keep proofing for 27 minutes. Brush the pie with egg wash.
Bake in a preheated 200C/400F oven for 31 minutes or until golden.
Leave to cool slightly for 15 minutes before slicing.
Serve with a glass of milk or a cup of freshly brewed tea.


help me pleas how download theme and install it im new here;;
Post edited 1 x times, last by
Meaurk
Global Moderator
Meaurk
Global Moderator
First of all my apologies for the late reply of the BBLog theme!
On Battlelog you will find the BBLog's sidebar on the left side of your screen. When you hover it, it will expand with all options. Under "General Improvements" you will find "Themes". Click on the button and a pop up screen will appear. You can now choose the theme you want.


I sat in the theater, watching The Truman Show, and I was entertained. It was smart, very original, a bit thought provoking, sensible, smooth and fun.  Suddenly the slight incoherency of the early parts of this movie made sense, it reminded me of looking at a Monet..you look at it up close, and it looks nice, but when you step back, and look at the big picture..the view is truly amazing. This is another review that was a bit hard to write, not because I wasn't sure what to write, or if I liked, or disliked it, but rather, I had..have so many thoughts running through my head regarding this movie, that I could probably create my own forum from it. It is that kind of movie..makes you tilt your head, like that RCA dog. Unfortunately, trends have shown that summer movies tend to be the cinematic equivalent of Chinese food, quickly filling, then forgotten. However another one of my gauges for a good movie, is if you are talking about after you leave the theater..does it get inside you, stay with you. The last few movies to do that for me were Good Will Hunting, Sleepers, and my favorite..(and still underrated and underappreciated)..Usual Suspects. I have had so many thoughts regarding all of the different levels that this movie is on, the in-jokes, the commentary, the emotion, the undertones..so much happening here, that it very easily could've spun out of control. But Peter Weir corralled his movie, just as he has Carrey's trademark manic antics, and keeps the movie flowing evenly. Carrey is effective in his role, by far his best yet (of course, that isn't really saying too much, kind of like trying pick a GOOD piece of liver)..but he is good. He is not stifled however, Weir obviously knows the talent of Carrey, and lets him loose, a few times, for his comic nature. The difference in that this time, is that it looks natural, for the first time in a Jim Carrey movie, I felt like I was seeing the real him..not a character. He was funny, he was sensitive, emotional, running a gamut of emotions, every one looking sincere. Ed Harris, playing the director of the show, is magnificent as well (although, if I had to flaw the movie a tiny bit..he wasn't on screen enough..but then again, when I look back at the big picture, I can see why). Harris has always had that aura, of gentleness, with a glint of a dark side hiding in those eyes. He is paternally spooky in this role, almost seemingly torn between a fatherly bond to Truman, who he's watched over since birth (a couple of scenes support this emotion)..but also, he's pure Hollywood, scripting, planning, plotting, and controlling every act of Truman's life, except Truman himself..then reacting to Truman's actions, with a calm, controlling manner. As for the other performances, none really stand out, because of the fact that they are actors, playing actors..and you never see anything more than the character they are scripted to me. A slight exception to this is newcomer Natascha McElhone, who plays an unplanned, real love interest to Truman, but this situation, like every other crisis that arises..is quickly explained away, and quelled. We see her as a real person as well. This movie is both intriguing, and dark, funny, but not..and most disturbing of all, real, and honest. This movie feeds on the public's fascination with reality based media, showing us how a world reacts to Truman, just being himself. This is a commentary on what the media has become today, and what they could be in the future, another step towards an Orwellian society..more to come probably..
Note to Paramount Marketing Department: One of my criticisms of this movie, before I had seen it, rested with the studios campaign to market it as a Carrey- esque comedy, when it is actually far from that..shame on Paramount.  Do not lure the audience in on the precluse of seeing Ace 3, or something..and then give them this, granted, there are a few people who will be pleasantly surprised (example, as I was leaving the theater, someone stated "That was not what I expected at all...I liked it!) and glad they were drawn in by the deception, but ultimately, you will taint the films chances, by not delivering what was expected. Granted, it is good to tease, and not show all your cards..but there is a great difference between surprise, and outright deception
See more of my Reel Ramblings at http://www.angelfire.com/ks/nearside/comingatt.html
-----== Posted via Deja News, The Leader in Internet Discussion ==----- http://www.dejanews.com/rg_mkgrp.xp Create Your Own Free Member Forum
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


Vue=>data is not reactive, methods might be re-executed even if the property they don't depend on is updated.
So use computed properties in place of methods.
Computed properties should only be used to perform synchronous tasks.
Example: Bind car price to input & on change of car price, the discounted price should change.
< input type="text" v-model = 'carprice' >
car price: { { carprice } }
10% Discounted price : { { find_discounted_price } }
~~~ Javascript ~~~
data: {
carprice: 10000
},
computed: {
find_discounted_price: function(){
return carprice - (carprice*0.10);
}
}


AeroGear Services iOS Swift SDK
AeroGear Services iOS Swift SDK (AGS)
Documentation
List of SDKs
AeroGear Services consist of set of separate SDKs
- Core Core library used as base for other SDKs
- Auth Mobile application Auth SDK (part of the core bundle)
- Metrics Mobile application Metrics SDK (part of the core bundle)
- Push Mobile application Unified Push SDK
Contributing
License
See LICENSE file


You have chosen the crime dataset. Before this dataset can be used it needs to be cleansed.
Your job is to clean this entity by assigning the correct data types to each attribute.
| ID |
|
| Latitude |
|
| Longitude |
|
| StreetName |
|


Advanced Editing - AircraftConfigs.ae
Back to Index
Back to Advanced Editing
Base Target Matrix:
<baseTarget indexID="1" BTN="1" loadedWeight="14500"
payload="10000" cost="0" maxSC="11" />
For the BTN 1-10 the indexID is equal to the BTN.
This makes the new BTN handling compatible with the old system previous to version 1.1.0.
"loadedWeight" and "payload" are set in lbs. Also the "payload" is equal
to the bombers/cargo so called weight class.
"cost" is the fixed price in Dollar. This allows you easily to adjust the airframe
cost calculation in absolute values.
"maxSC" are the maximal special characteristics.
Max Speed Matrix:
<maxSpeed btnID="1" speed="1" weight="700" cost="470" />
You will need an entry for each possible BTN / max. speed combination.
The attribute "btnID" has to be unique and is a reference to base target matrix
indexId.
"speed" is the max speed value.
"weight" is set in lbs.
"cost" is set in Dollars.
Max Gs Matrix:
<maxGForce btnID="1" g="1" weight="1100" cost="510" />
You will need an entry for each possible BTN / max. G combination.
The attribute "btnID" has to be unique and is a reference to base target matrix
indexId.
"g" is the max G value.
"weight" is set in lbs.
"cost" is set in Dollars.
Max Acceleration Matrix:
<maxAcceleration btnID="1" accel="1" weight="1100" cost="250" />
You will need an entry for each possible BTN / max. Acceleration combination.
The attribute "btnID" has to be unique and is a reference to base target matrix
indexId.
"accel" is the max Acceleration value.
"weight" is set in lbs.
"cost" is set in Dollars.
Frame Definition Tag:
<frameDef frameType="fighter"
minBaseTarget="5" maxBaseTarget="10" minSpeed="1"
maxSpeed="5" minGs="1" maxGs="5"
minAccel="1" maxAccel="3" minDecel="2"
maxDecel="2" hasWings="true" hasBows="false"
maxGuns="8" allowsTurrets="0">
<allowedProp propType="pusher"/> 1-n ...
<turretDef direction="" linkedGuns="1,2" weight="" cost=""/>
0-n ...
</frameDef>
First you can't add new frame types by your own yet, but modify the exiting ones, which are:
fighter, heavyFighter, hoplite, heavyBomber, lightBomber, heavyCargo and lightCargo
The frame definition sets up everything that is limited by the aircraft window, when you select
a specific frame.
The attribute "allowsTurrets" can be 0,1 or 2:
0 = no
1 = may have
2 = only turrets allowed


Categorization (Sorting but to different buckets where order may not matter?)
Match (2 columns) (similar to categorization?)
Sorting / Ordering
Sliders
Multi-select contiguous items
Multiple select non-contiguous items
Sliders - controlling something else that may be important (nonlinear)
Actions may be performed while being dragged
Or multiple paths - midi mercury example? Bruce W.
Simple cases with x number of items? Where x is greater than 10? 100? 1000?
Dragging in a 2D plane, where there might not be a destination or well defined source?
During Dragging you can pick up more items.
Here is the Link to the Google Spreadsheet
https://docs.google.com/spreadsheets/d/1GJ-CTczylYjjt-fWB7J8dea6sjm17E4sbkFWsa6dXxo/edit?usp=sharing
MIDI Mercury:
http://sonify.psych.gatech.edu/research/middiemercury/Middie_Mercury_Final_Video.m4v#t=2
http://sonify.psych.gatech.edu/research/gamesandsports/index.html (scroll down)
Comments from Matt King
It seems to me that it would be very beneficial if the analysis document were to also describe the cut/paste interaction and then compare the drag/drop and cut/paste metaphors. The section about choosing could then address when cut/paste is a sufficient keyboard alternative to drag/drop.
Categorization CSUN https://benetech.github.io/Accessible-Interactives-Dev/Drag%20and%20Drop/Categorization/Categorization.html
Match CSUN
//benetech.github.io/Accessible-Interactives-Dev/Drag%20and%20Drop/Match/index.html
Ordering CSUN
https://benetech.github.io/Accessible-Interactives-Dev/Drag%20and%20Drop/Ordering/index.html
Sorting CSUN
https://benetech.github.io/Accessible-Interactives-Dev/Drag%20and%20Drop/Sortable/sortable.html
Dragging in a 2D plane (Sorry, example not accessible):
https://phet.colorado.edu/sims/html/gravity-and-orbits/latest/gravity-and-orbits_en.html?screens=1
Sorting in a grid (Example not accessible):
https://phet.colorado.edu/sims/html/area-builder/latest/area-builder_en.html?screens=1
Example of multiple sliders:
Example of sorting items from 3 buckets into 3 destinations:
https://phet.colorado.edu/sims/html/build-an-atom/latest/build-an-atom_en.html?screens=1
Slider examples from the current draft of the ARIA authoring Practices:
http://w3c.github.io/aria-practices/#slider
Interesting sorting example (described as “list reordering”):
https://build.fluidproject.org/infusion/demos/reorderer/listReorderer/
WeScheme Examples
Example of speed impacting drag interaction:
http://www.colorado.edu/physics/phet/dev/html/friction/1.4.0-dev.2/friction_en.html?accessibility
Large number of drop targets:
https://phet.colorado.edu/sims/html/area-builder/latest/area-builder_en.html


Main
Setting
Setting
Theme
Dark
FullScreen
Sure
CONFIRM
About Keys
alt+1~9 在第1~9菜單中切換
alt+` 顯示或隱藏本應用


Twitter Export
Home
Github
A tool to DM your twitter followers
Subscribe to {{orig_created_by}} here!
Submit
Thank you for your subsciption!!
You can use this affiliate link to get more subscribers on board.