--- layout: post title: "Danish CPR numbers in F#" description: "An example of domain-modelling in F#, including a fine example of using the option type as an applicative functor." date: 2018-12-10 8:14 UTC tags: [Software Design, F#] --- {% include JB/setup %}
{{ page.description }}
This article is an instalment in an article series about applicative functors, although the applicative functor example doesn't appear until towards the end. This article also serves the purpose of showing an example of Domain-Driven Design in F#.
As outlined in the previous article, in Denmark, everyone has a personal identification number, in Danish called CPR-nummer (CPR number).
CPR numbers have a simple format: DDMMYY-SSSS
, where the first six digits indicate a person's birth date, and the last four digits are a sequence number. Some information, however, is also embedded in the sequence number. An example could be<PHONE_NUMBER>
, which indicates a woman born February 1, 1903.
One way to model this in F# is with a single-case discriminated union:
type CprNumber = private CprNumber of (int * int * int * int) with override x.ToString () = let (CprNumber (day, month, year, sequenceNumber)) = x sprintf "%02d%02d%02d-%04d" day month year sequenceNumber
This is a common idiom in F#. In object-oriented design with e.g. C# or Java, you'd typically create a class and put guard clauses in its constructor. This would prevent a user from initialising an object with invalid data (such as<PHONE_NUMBER>
). While you can create classes in F# as well, a single-case union with a private case constructor can achieve the same degree of encapsulation.
In this case, I decided to use a quadruple (4-tuple) as the internal representation, but this isn't visible to users. This gives me the option to refactor the internal representation, if I need to, without breaking existing clients.
Since the CprNumber
case constructor is private, you can't just create new values like this:
let cpr = CprNumber (1, 1, 1, 1118)
If you're outside the Cpr
module that defines the type, this doesn't compile. This is by design, but obviously you need a way to create values. For convenience, input values for day, month, and so on, are represented as int
s, which can be zero, negative, or way too large for CPR numbers. There's no way to statically guarantee that you can create a value, so you'll have to settle for a tryCreate
function; i.e. a function that returns Some CprNumber
if the input is valid, or None
if it isn't. In Haskell, this pattern is called a smart constructor.
There's a couple of rules to check. All integer values must fall in certain ranges. Days must be between 1 and 31, months must be between 1 and 12, and so on. One way to enable succinct checks like that is with an active pattern:
let private (|Between|_|) min max candidate = if min <= candidate && candidate <= max then Some candidate else None
Straightforward: return Some candidate
if candidate
is between min
and max
; otherwise, None
. This enables you to pattern-match input integer values to particular ranges.
Perhaps you've already noticed that years are represented with only two digits. CPR is an old system (from 1968), and back then, bits were expensive. No reason to waste bits on recording the millennium or century in which people were born. It turns out, after all, that there's a way to at least partially figure out the century in which people were born. The first digit of the sequence number contains that information:
// int -> int -> int let private calculateFourDigitYear year sequenceNumber = let centuryDigit = sequenceNumber / 1000 // Integer division // Table from https://da.wikipedia.org/wiki/CPR-nummer match centuryDigit, year with | Between 0 3 _, _ -> 1900 | 4 , Between 0 36 _ -> 2000 | 4 , _ -> 1900 | Between 5 8 _, Between 0 57 _ -> 2000 | Between 5 8 _, _ -> 1800 | _ , Between 0 36 _ -> 2000 | _ -> 1900 + year
As the code comment informs the reader, there's a table that defines the century, based on the two-digit year and the first digit of the sequence number. Note that birth dates in the nineteenth century are possible. No Danes born before 1900 are alive any longer, but at the time the CPR system was introduced, one person in the system was born in 1863!
The calculateFourDigitYear
function starts by pulling the first digit out of the sequence number. This is a four-digit number, so dividing by 1,000 produces the digit. I left a comment about integer division, because I often miss that detail when I read code.
The big pattern-match expression uses the Between
active pattern, but it ignores the return value from the pattern. This explains the wild cards (_
), I hope.
Although a pattern-match expression is often formatted over several lines of code, it's a single expression that produces a single value. Often, you see code where a let
-binding binds a named value to a pattern-match expression. Another occasional idiom is to pipe a pattern-match expression to a function. In the calculateFourDigitYear
function I use a language construct I've never seen anywhere else: the eight-lines pattern-match expression returns an int
, which I simply add to year
using the +
operator.
Both calculateFourDigitYear
and the Between
active pattern are private functions. They're only there as support functions for the public API. You can now implement a tryCreate
function:
// int -> int -> int -> int -> CprNumber option let tryCreate day month year sequenceNumber = match month, year, sequenceNumber with | Between 1 12 m, Between 0 99 y, Between 0 9999 s -> let fourDigitYear = calculateFourDigitYear y s if 1 <= day && day <= DateTime.DaysInMonth (fourDigitYear, m) then Some (CprNumber (day, m, y, s)) else None | _ -> None
The tryCreate
function begins by pattern-matching a triple (3-tuple) using the Between
active pattern. The month
must always be between 1
and 12
(both included), the year
must be between 0
and 99
, and the sequenceNumber
must always be between 0
and 9999
(in fact, I'm not completely sure if 0000
is valid).
Finding the appropriate range for the day
is more intricate. Is 31
always valid? Clearly not, because there's no November 31, for example. Is 30
always valid? No, because there's never a February 30. Is 29
valid? This depends on whether or not the year is a leap year.
This reveals why you need calculateFourDigitYear
. While you can use DateTime.DaysInMonth
to figure out how many days a given month has, you need the year. Specifically, February 1900 had 28 days, while February 2000 had 29.
Ergo, if day
, month
, year
, and sequenceNumber
all fall within their appropriate ranges, tryCreate
returns a Some CprNumber
value; otherwise, it returns None
.
Notice how this is different from an object-oriented constructor with guard clauses. If you try to create an object with invalid input, it'll throw an exception. If you try to create a CprNumber
value, you'll receive a CprNumber option
, and you, as the client developer, must handle both the Some
and the None
case. The compiler will enforce this.
> let gjern = Cpr.tryCreate 11 11 11 1118;; val gjern : Cpr.CprNumber option = Some<PHONE_NUMBER> > gjern |> Option.map Cpr.born;; val it : DateTime option = Some 11.11.1911 00:00:00
As most F# developers know, F# gives you enough syntactic sugar to make this a joy rather than a chore... and the warm and fuzzy feeling of safety is priceless.
The above FSI session uses Cpr.born
, which you haven't seen yet. With the tools available so far, it's trivial to implement; all the work is already done:
// CprNumber -> DateTime let born (CprNumber (day, month, year, sequenceNumber)) = DateTime (calculateFourDigitYear year sequenceNumber, month, day)
While the CprNumber
case constructor is private
, it's still available from inside of the module. The born
function pattern-matches day
, month
, year
, and sequenceNumber
out of its input argument, and trivially delegates the hard work to calculateFourDigitYear
.
Another piece of data you can deduce from a CPR number is the gender of the person:
// CprNumber -> bool let isFemale (CprNumber (_, _, _, sequenceNumber)) = sequenceNumber % 2 = 0 let isMale (CprNumber (_, _, _, sequenceNumber)) = sequenceNumber % 2 <> 0
The rule is that if the sequence number is even, then the person is female; otherwise, the person is male (and if you change sex, you get a new CPR number).
> gjern |> Option.map Cpr.isFemale;; val it : bool option = Some true
Since 1118
is even, this is a woman.
CPR numbers are often passed around as text, so you'll need to be able to parse a string
representation. As described in the previous article, you should follow Postel's law. Input could include extra white space, and the middle dash could be missing.
The .NET Base Class Library contains enough utility methods working on string
values that this isn't going to be particularly difficult. It can, however, be awkward to interoperate with object-oriented APIs, so you'll often benefit from adding a few utility functions that give you curried functions instead of objects with methods. Here's one that adapts Int32.TryParse
:
module private Int = // string -> int option let tryParse candidate = match candidate |> Int32.TryParse with | true, i -> Some i | _ -> None
Nothing much goes on here. While F# has pleasant syntax for handling out
parameters, it can be inconvenient to have to pattern-match every time you'd like to try to parse an integer.
Here's another helper function:
module private String = // int -> int -> string -> string option let trySubstring startIndex length (s : string) = if s.Length < startIndex + length then None else Some (s.Substring (startIndex, length))
This one comes with two benefits: The first benefit is that it's curried, which enables partial application and piping. You'll see an example of this further down. The second benefit is that it handles at least one error condition in a type-safe manner. When trying to extract a sub-string from a string, the Substring
method can throw an exception if the index or length arguments are out of range. This function checks whether it can extract the requested sub-string, and returns None
if it can't.
I wouldn't be surprised if there are edge cases (for example involving negative integers) that trySubstring
doesn't handle gracefully, but as you may have noticed, this is a function in a private
module. I only need it to handle a particular use case, and it does that.
You can now add the tryParse
function:
// string -> CprNumber option let tryParse (candidate : string ) = let (<*>) fo xo = fo |> Option.bind (fun f -> xo |> Option.map f) let canonicalized = candidate.Trim().Replace("-", "") let dayCandidate = canonicalized |> String.trySubstring 0 2 let monthCandidate = canonicalized |> String.trySubstring 2 2 let yearCandidate = canonicalized |> String.trySubstring 4 2 let sequenceNumberCandidate = canonicalized |> String.trySubstring 6 4 Some tryCreate <*> Option.bind Int.tryParse dayCandidate <*> Option.bind Int.tryParse monthCandidate <*> Option.bind Int.tryParse yearCandidate <*> Option.bind Int.tryParse sequenceNumberCandidate |> Option.bind id
The function starts by defining a private <*>
operator. Readers of the applicative functor article series will recognise this as the 'apply' operator. The reason I added it as a private operator is that I don't need it anywhere else in the code base, and in F#, I'm always worried that if I add <*>
at a more visible level, it could collide with other definitions of <*>
- for example one for lists. This one particularly makes option
an applicative functor.
The first step in parsing candidate
is to remove surrounding white space and the interior dash.
The next step is to use String.trySubstring
to pull out candidates for day, month, and so on. Each of these four are string option
values.
All four of these must be Some
values before we can even start to attempt to turn them into a CprNumber
value. If only a single value is None
, tryParse
should return None
as well.
You may want to re-read the article on the List applicative functor for a detailed explanation of how the <*>
operator works. In tryParse
, you have four option
values, so you apply them all using four <*>
operators. Since four values are being applied, you'll need a function that takes four curried input arguments of the appropriate types. In this case, all four are int option
values, so for the first expression in the <*>
chain, you'll need an option of a function that takes four int
arguments.
Lo and behold! tryCreate
takes four int
arguments, so the only action you need to take is to make it an option
by putting it in a Some
case.
The only remaining hurdle is that tryCreate
returns CprNumber option
, and since you're already 'in' the option
applicative functor, you now have a CprNumber option option
. Fortunately, bind id
is always the 'flattening' combo, so that's easily dealt with.
> let andreas = Cpr.tryParse "<PHONE_NUMBER>";; val andreas : Cpr.CprNumber option = Some<PHONE_NUMBER>
Since you now have both a way to parse a string, and turn a CprNumber
into a string, you can write the usual round-trip property:
[<Fact>] let ``CprNumber correctly round-trips`` () = Property.check <| property { let! expected = Gen.cprNumber let actual = expected |> string |> Cpr.tryParse Some expected =! actual }
This test uses Hedgehog, Unquote, and xUnit.net. The previous article demonstrates a way to test that Cpr.tryParse
can handle mangled input.
This article mostly exhibited various F# design techniques you can use to achieve an even better degree of encapsulation than you can easily get with object-oriented languages. Towards the end, you saw how using option
as an applicative functor enables you to compose more complex optional values from smaller values. If just a single value is None
, the entire expression becomes None
, but if all values are Some
values, the computation succeeds.
This article is an entry in the F# Advent Calendar in English 2018.
Next: The Lazy applicative functor.
Comments
Great post, a very good read! Interestingly enough we recently made an F# implementation for the swedish personal identification number. In fact v1.0.0 will be published any day now. Interesting to see how the problem with four-digit years are handled differently in Denmark and Sweden.
I really like the Between Active pattern of your solution, we did not really take as a generic approach, instead we modeled with types for Year, Month, Day, etc. But I find your solution to be very concise and clear. Also we worked with the Result type instead of Option to be able to provide the client with helpful error messages. For our Object Oriented friends we are also exposing a C#-friendly facade which adds a bit of boiler plate code.
Viktor, thank you for your kind words. The
Result
(or Either) type does, indeed, provide more information when things go wrong. This can be useful when client code needs to handle different error cases in different ways. Sometimes, it may also be useful, as you write, when you want to provide more helpful error messages.Particularly when it comes to parsing or input validation, Either can be useful.
The main reason I chose to model with
option
in this article was that I wanted to demonstrate how to use the applicative nature ofoption
, but I suppose I could have equally done so withResult
.


This site was set up to allow searching of medical objectives across discplines. The initial database was populated by objectives suggested for medical school by national societed from multiple disciplines (see table below).
| Society | Year | Discipline | # Objectives | Publication |
|---|---|---|---|---|
| Association of Anatomy, Cell Biology, and Neurobiology Chairpersons | 1997 | Anatomy | 266 | Association of Anatomy, Cell Biology, and Neurobiology Chairpersons. (Spring 1997). "United States/Canadian Curriculum Content in the Anatomical Sciences". |
| Society for Education of Anesthesia | 2009 | Anesthesia | 132 | - |
| Association of Directors of Medical Student Education in Psychiatry | 2007 | Behavioral Sciences | 185 | M. Burke et. al. ADMSE Psychiatry Learning Objectives Taskforce 2007. "Clinical Learning Objectives Guide for Psychiatry Education of Medical Students". |
| Association of American Medical Colleges | 2011 | Behavioral Sciences | 18 | AAMC Report of the Behavioral and Social Science Expert Panel. (November 2011). "Behavioral and Social Science Foundations for Future Physicians" |
| Association of Biochemistry Educators | 2012 | Biochemistry | 394 | - |
| Association of Anatomy, Cell Biology, and Neurobiology Chairpersons | 1997 | Cell Biology | 82 | |
| Association of American Medical Colleges | 2008 | Clinical Medicine | 237 | E. Corbett et. al. AAMC Task Force On the Preclerkship Clinical Skills Education of Medical Students (2008). "Recommendations For Clinical Skills Curricula For Undergraduate Medical Education". |
| Association of Anatomy, Cell Biology, and Neurobiology Chairpersons | 1997 | Embryology | 304 | Association of Anatomy, Cell Biology, and Neurobiology Chairpersons. (Spring 1997). "United States/Canadian Curriculum Content in the Anatomical Sciences". |
| Society of Teachers of Family Medicine | 2012 | Family Medicine | 158 | H. Chumley et. al. Society of Teachers of Family Medicine. "The Family Medicine Clerkship Curriculum" February 2012. |
| Association of Professors of Human and Medical Genetics | 2010 | Genetics | 103 | K. Hyland et. al. Association of Professors of Human and Medical Genetics. "APHMG Medical School Core Curriculum in Genetics 2013". |
| American College of Medical Genetics | 2011 | Genetics | 291 | Korf, B.R., Irons, M., and Watson, M.S. (2011). American College of Medical Genetics. "Competencies for the Physician Medical Geneticist in The 21st Century". Genet Med 13, 911-912. |
| Association for Gerontology in Higher Education | 2008 | Gerontology | 33 | Korf, B.R., Irons, M., and Watson, M.S. (2011). American College of Medical Genetics. "Competencies for the Physician Medical Geneticist in The 21st Century". Genet Med 13, 911-912. |
| Studies in Geriatric Education | 1986 | Gerontology | 118 | Robbins, A.S., Fink, A., Kosecoff, J., Vivell, S., and Beck, J.C. (1982). Studies in Geriatric Education: I. Developing Educational Objectives. Journal of the American Geriatrics Society 30, 281–288. |
| American Society of Hematology | 2014 | Hematology | 216 | American Society of Hematology. "Medical Student Hematology Course Learning Objectives" (2014). |
| Association of Anatomy, Cell Biology, and Neurobiology Chairpersons | 1997 | Histology | 157 | Association of Anatomy, Cell Biology, and Neurobiology Chairpersons. (Spring 1997). "United States/Canadian Curriculum Content in the Anatomical Sciences". |
| Clerkship Directors in Internal Medicine and Society of General Internal Medicine | 2006 | Internal Medicine | 2,852 | De Fer, T. M., Fazio, S. B., Goroll, A., Friedman, E., Henry, D. A., Kuzma, M. A., Sebastian, J. L., Ledford, C. H., Westmoreland, G., Ryan, K. F., Wolpaw, T. M., Baptista, N. V., and Clayton, C. P. (2006). "CORE MEDICINE CLERKSHIP CURRICULUM GUIDE A RESOURCE FOR TEACHERS AND LEARNERS Version 3.0" |
| International Association of Medical Science Educators | 2009 | Microbiology | 1,344 | Booth, SJ, Burges, G, Justement, L, and Knoop, F. "Design and Implementation of Core Knowledge Objectives for Medical Microbiology and Immunology. Journal of the International Association of Medical Science Educators" (JIAMSE), 19 (3): 100-138, 2009. |
| International Association of Medical Science Educators | 2009 | Immunology | 1,160 | Booth, SJ, Burges, G, Justement, L, and Knoop, F. "Design and Implementation of Core Knowledge Objectives for Medical Microbiology and Immunology. Journal of the International Association of Medical Science Educators" (JIAMSE), 19 (3): 100-138, 2009. |
| Association of Anatomy, Cell Biology, and Neurobiology Chairpersons | 1997 | Neuroscience | 98 | Association of Anatomy, Cell Biology, and Neurobiology Chairpersons. (Spring 1997). "United States/Canadian Curriculum Content in the Anatomical Sciences". |
| Association of Professors of Gynecology & Obstetrics | 2009 | Obstetrics & Gynecology | 328 | APGO Undergraduate Medical Education Committee (UMEC) 2008-2010: Hammoud, M. M., Casey, P. M., Chuang, A. W., Cullimore, A. J., Dalrymple, J. L.; Dugoff, L., Espey, L. E., Hueppchen, N. A., Kaczmarczyk, J. M., Katz, N. T., Nuthalapaty, F. S., Peskin, E. T. (2009). Association of Professors of Gynecology & Obstetrics. APGO Medical Student Educational Objectives 9th Edition. |
| Group for Research In Pathology Education | 2005 | Pathology | 2,861 | Group for Research in Pathology Edcucation. (2005). "GRIPE General Pathology Objectives". |
| Council on Medical Student Education in Pediatrics | 2005 | Pediatrics | 383 | Council on Medical Student Education in Pediatrics. (2005). "COMSEP Curriculum Revision 2005". |
| American Society for Pharmacology and Experimental Therapeutics | 2012 | Pharmacology | 1307 | Eisenberg, R., and Faingold, C. “Knowledge Objectives in Medical Pharmacology (2012 Edition).” Association of Medical School Pharmacology Chairs. |
| The American Physiological Society and the Association of Chairs of Departments of Physiology | 2012 | Physiology | 862 | R. Carroll, L. Navar, M. Blaustein (2012). The American Physiological Society and the Association of Chairs of Departments of Physiology. Medical Physiology Learning Objectives. |
| Association of University Radiologists | 2014 | Radiology | 106 | R. Carroll, L. Navar, M. Blaustein (2012). The American Physiological Society and the Association of Chairs of Departments of Physiology. Medical Physiology Learning Objectives. |


Peter Andre dances on the table as he performs in front of junior at charity gig
The Mysterious Girl singer was the star performer at Back On Track's Dancing With Heroes charity bash in London
by Mirror .co.ukPeter Andre was dancing on the tables at a charity event on Saturday night after vowing to set his audience on fire with his blinding performance.
The 46-year-old Australian music legend was the headline performer at the Back On Track Dancing With Heroes Ball at The London Hilton Hotel in Park Lane.
He was joined by 14-year-old son Junior who proudly shared videos and photos from the night via his instagram stories showing Peter whipping through a set of east listening tunes.
Earlier, Pete had shared a pep talk he had from friends before his performance as he limbered up to sing for the live audience.
“Peter, here’s how it goes; you’ve got the band behind you, alright? We’ve got Peter Andre up front, okay? And we’ve got the audience,” a friend said as he devised an attack plan for the singer.
“We start at 11 o clock, over here you call it 23 hundred hours. What we want by 24 hundred is the audience to be in flames!” Peter’s friend said as everyone else in the room erupted in laughter.
It seems Pete was successful in getting his audience to lose control.
“By the end it was [fire],” he revealed in an Instagram Stories update.
“People rammed the stage and one fell hard…. oops,” he added.
Back On Track is a charity that raises money for former service men and women from the armed forces to get specialist medical treatment following combat injuries.
Originally the charity was set up to raise funds for veterans to enjoy go karting, but the charity evolved.
Patron Dr Aamer Khan of The Harley Street Skin Clinic says: “We do still raise money to continue the racing, but as more support is pledged from generous donors across the spectrum.
He continues: “It has allowed us to take the charity to another level – one where we can offer physical help and cosmetic treatments to help alleviate scarring, burns injuries as well as psychological trauma.”
He adds: “The medical industry has been generous, too, by offering their services at little, or no cost. Back on Track may be small… but we are mighty!”
Peter and Junior both had a great time at the event.


{% extends "annotation/annotation_base.html" %} {% load static %} {% block annotation-area %}
Click on a region to enter an annotation. Shift-click plays a region in a loop. Click on Done to save the annotations.


Product Designer
With industry experience in UX/UI design, storytelling, and prototyping.
Feel free to email me at<EMAIL_ADDRESS>to get the password if you'd like to see my case studies.
Enter
wrong password


{% extends "layout.html" %} {% block body %}
{{flight_count['value']}} Flights
| Airline | Flight Number | Origin | Destination | Date | Departure Time | Tail Number | Air Time | Distance | {% for flight in flights %}
|---|---|---|---|---|---|---|---|---|
| {{flight.Carrier}} | {{flight.FlightNum}} | {{flight.Origin}} | {{flight.Dest}} | {{flight.FlightDate}} | {{flight.DepTime}} | {{flight.TailNum}} | {{flight.AirTime}} | {{flight.Distance}} |


Welcome to Deployment Tracker v3.0!
This version features a refreshed interface and adds the ability to sync your data to the cloud.
Go to Settings then Sync Settings for more information and to set it up.


About 2 years ago I had a 6 weeks long hospital stay and 4 intense surgeries. During that time I fell in love with opiates. I had tried every drug except opiates, and always had no real problem in controlling addiction and using them recreationally. Well after the first shot of dilaudid in the ER I realized I was in for a serious ride. 2 years later and I have tried heroin (snorting), Oxycontinx80ís (3 a day), smoking fentanyl gel (2-3 25mg patches a day), massive doses of poppy pod tea and pretty much any opiate I could get my grubby little hands on.
I have gone through the withdrawals so many times in the past 2 years; I hate them more than anything in the world.   Well a few months ago I found a new doctor who I wanted to be honest with, he understood my problems and prescribed me Gabapentin to help with my nerve damage.
After a month long binge of poppy tea and Oxy 80ís it was time to quit once again and get my tolerance back along with my health. The first day I woke up feeling the withdrawals very hard; sweating, freezing (it was 80+ out), running nose, cough and most of all a horrible case of depression. This time seemed different, I wasnít ready, my mind was all messed up and I wanted to curl up and die. I took my normal 300mg dose of Gabapentin and then left for work dreading what the next 3-4 days has in store.
After about an hour or so at work I realized my sickness was not as strong as it was when I awoke. I soon had the idea of searching the experience vault for Gabapentin and came across several others who found Gabapentin to ease off the withdrawal symptoms. I immediately popped 1200mg and an hour later realized nearly all the withdrawal symptoms had faded away! It was unbelievable!
Feeling fine the rest of the day and falling asleep with no problem I awake again to feel the withdrawal symptoms, this time I popped 1500mg and an hour or so later I was feeling just fine! I took another 1500mg before bed that night and woke up feeling pretty good, so I took another dose and off to work I go being productive and talkative.
After the 4th day I stopped the Gabapentin and realized I made it through the withdrawals without feeling like pure hell for 4 days in a row. Not only did it really help with my nerve pain, it almost cured opiate withdrawals. It stopped the goose skin, the constant cold sweats, the horrible depression and somehow the runny nose and cough. I am so glad to have found this drug.
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.


The study uses some advanced features of JavaScript which are only supported by fairly modern browsers. Before you begin the study, we need to check whether your browser is able to run it.
Below, you should see a series of short tests being run. This process should only take a few seconds.


Watch: Roddy Ricch + A Boogie Wit Da Hoodie Get Sci-IF AF In New TIP TOE Video
by Team SOHHRap artist Roddy Ricch and A Boogie Wit Da Hoodie are helping everyone get their week started off on the right foot. The duo have come through Monday with their new, sci-fit-looking “Tip Toe” music video premiere. Watch and comment below!


mysqli_stmt::get_result
mysqli_stmt_get_result
(PHP 5 >= 5.3.0, PHP 7)
mysqli_stmt::get_result -- mysqli_stmt_get_result — Gets a result set from a
prepared statement
说明
面向对象风格
mysqli_result mysqli_stmt::get_result ( void )
过程化风格
mysqli_result mysqli_stmt_get_result ( mysqli_stmt $stmt )
Call to return a result set from a prepared statement query.
参数
stmt
仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。
返回值
Returns a resultset for successful SELECT queries, or FALSE for other DML
queries or on failure. The mysqli_errno() function can be used to distinguish
between the two types of failure.
仅 MySQL 原生驱动
仅可用于 mysqlnd。
范例
Example #1 面向对象风格
connect_error)
{
die("$mysqli->connect_errno: $mysqli->connect_error");
}
$query = "SELECT Name, Population, Continent FROM Country WHERE Continent=?
ORDER BY Name LIMIT 1";
$stmt = $mysqli->stmt_init();
if(!$stmt->prepare($query))
{
print "Failed to prepare statement\n";
}
else
{
$stmt->bind_param("s", $continent);
$continent_array = array('Europe','Africa','Asia','North America');
foreach($continent_array as $continent)
{
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_NUM))
{
foreach ($row as $r)
{
print "$r ";
}
print "\n";
}
}
}
$stmt->close();
$mysqli->close();
?>
Example #2 过程化风格
以上例程会输出：
Albania 3401200 Europe
Algeria 31471000 Africa
Afghanistan 22720000 Asia
Anguilla 8000 North America
参见
• mysqli_prepare() - Prepare an SQL statement for execution
• mysqli_stmt_result_metadata() - Returns result set metadata from a prepared
statement
• mysqli_stmt_fetch() - Fetch results from a prepared statement into the
bound variables
• mysqli_fetch_array() - Fetch a result row as an associative, a numeric
array, or both
• mysqli_stmt_store_result() - Transfers a result set from a prepared
statement
• mysqli_errno() - 返回最近函数调用的错误代码
User Contributed Notes 4 notes
===============================================================================
I went through a lot of trouble on a server where mysqlnd wasn't available, and
had a lot of headaches.
If you don't have mysqlnd installed/loaded whatever, you will get an undefined
reference when trying to call "mysqli_stmt_get_result()".
I wrote my own mysqli_stmt_get_result() and a mysqli_result_fetch_array() to go
with it.
nCols = mysqli_num_fields($metadata);
$ret->stmt = $stmt;
mysqli_free_result($metadata);
return $ret;
}
function iimysqli_result_fetch_array(&$result)
{
$ret = array();
$code = "return mysqli_stmt_bind_result(\$result->stmt ";
for ($i=0; $i<$result->nCols; $i++)
{
$ret[$i] = NULL;
$code .= ", \$ret['" .$i ."']";
};
$code .= ");";
if (!eval($code)) { return NULL; };
// This should advance the "$stmt" cursor.
if (!mysqli_stmt_fetch($result->stmt)) { return NULL; };
// Return the array we built.
return $ret;
}
?>
Hope this helps someone.
===============================================================================
Please note that this method requires the mysqlnd driver. Othervise you will
get this error: Call to undefined method mysqli_stmt::get_result()
===============================================================================
This method drove me mad for an hour or two because it returns false
after performing a successful query that isn't a SELECT, even though the
documentation says "return FALSE on failure". Nothing failed!
If you're preparing a SELECT statement, expect a result object. Anything else,
just use the properties of the statement object.
I find this library painfully inconsistent.
===============================================================================
well I for one found anonymous' above eval-trick code very useful, seeing as no
one has posted a working alternative! However, because I wanted to cater for a
generic database object, I found it a problem that the code assumed numeric
array was fine for all callsites, and I needed to cater for all callers using
assoc arrays exlusively. I came up with this:
result_metadata();
$ret = new IImysqli_result;
if (!$ret || !$metadata) return NULL; //the latter because this gets
called whether we are adding/updating as well as returning
$ret->ncols = $metadata->field_count;
$ret->stmt = $stmt;
$metadata->free_result();
return $ret;
}
//this mimics mysqli_fetch_array by returning a new row each time until
exhausted
function iimysqli_result_fetch_array(&$result) {
$stmt = $result->stmt;
$stmt->store_result();
$resultkeys = array();
$thisName = "";
for ( $i = 0; $i < $stmt->num_rows; $i++ ) {
$metadata = $stmt->result_metadata();
while ( $field = $metadata->fetch_field() ) {
$thisName = $field->name;
$resultkeys[] = $thisName;
}
}
$ret = array();
$code = "return mysqli_stmt_bind_result(\$result->stmt ";
for ($i=0; $i<$result->ncols; $i++) {
$ret[$i] = NULL;
$theValue = $resultkeys[$i];
$code .= ", \$ret['$theValue']";
}
$code .= ");";
if (!eval($code)) {
return NULL;
}
// This should advance the "$stmt" cursor.
if (!mysqli_stmt_fetch($result->stmt)) {
return NULL;
}
// Return the array we built.
return $ret;
}
}
?>


Sweet Free Stuff
///////////////////////////////////////////
Free Purina One Tender Selects Blend Cat Food Sample
Posted: 11 May 2016 11:15 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Click on Sign up for your free sample. Free Purina One Tender Selects Blend
Cat Food Sample
The post Free Purina One Tender Selects Blend Cat Food Sample appeared
first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Better Homes & Gardens
Posted: 11 May 2016 03:00 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
The post Free Subscription to Better Homes Gardens appeared first on
SweetFreeStuff.com.
CommentsCool by LaceyJust say “Poole Company” they dont actually check by
Christine MartinezThanks by lendal greathouseI love this magazine. by
marleme stearmsCan’t wait for my free subscription and love the recipes
and … by KevinPlus 8 more…
///////////////////////////////////////////
Free Feed a Bee Seed Packet
Posted: 11 May 2016 01:36 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Get your seed packet to plant and support pollinator health in your own
neighborhood. Click on Send Me Free Seeds and fill out the form. Free Feed
a Bee Seed Packet
The post Free Feed a Bee Seed Packet appeared first on SweetFreeStuff.com.
CommentsI like this, thank you by Ivonne GarciaThanks by Timothy CareyNice
keep them coming by saybra edmond
///////////////////////////////////////////
Free Sample of Rachael Ray DISH Dry Food for Dogs (Expired)
Posted: 11 May 2016 01:17 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
*Expired for now. Select the sample and fill out the form. Free Sample of
Rachael Ray DISH Dry Food for Dogs
The post Free Sample of Rachael Ray DISH Dry Food for Dogs (Expired)
appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Nivea Lotion Samples
Posted: 11 May 2016 12:05 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Samples of Nivea Cocoa Butter and Nourishing In-Shower Body Lotion.
Free Nivea Lotion Samples
The post Free Nivea Lotion Samples appeared first on SweetFreeStuff.com.
CommentsI’ve been waiting to try new lotions by myrna ortizLove it by
Lisabeen really wanting to try by jenniferLove theire line of producte by
Darlene KingWanting to try this by NikkiPlus 6 more…
///////////////////////////////////////////
Free Lancome Visionnaire Nuit Beauty Sleep Perfector Sample
Posted: 10 May 2016 11:16 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Click View desktop site if on mobile. Free Lancome Visionnaire Nuit Beauty
Sleep Perfector Sample
The post Free Lancome Visionnaire Nuit Beauty Sleep Perfector Sample
appeared first on SweetFreeStuff.com.
CommentsThanks u by Delaine colonThank u by fazeela chungThank you! by
Elizabeth GarciaThank you by JayThank you. by LindaThank you! by Mary
///////////////////////////////////////////
Free HippoSak Trash Bags Sample
Posted: 10 May 2016 10:43 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free HippoSak Trash Bags Sample
The post Free HippoSak Trash Bags Sample appeared first on
SweetFreeStuff.com.
CommentsSeems to be working now by CNI just emailed the company about this
problem we will see if it … by RickieSame Thing Also! by Brian JSame
result by CNim having the same problem by joePlus 2 more…
///////////////////////////////////////////
Free ChildLife Essentials Sample Pack
Posted: 10 May 2016 10:00 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Click on Free Sample Pack at the top of the page. Free ChildLife Essentials
Sample Pack
The post Free ChildLife Essentials Sample Pack appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
SwagBucks - Earn Free Gift Cards Online
Posted: 10 May 2016 10:00 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Swagbucks is the webs leading rewards platform, dedicated to providing FREE
gift cards to its 12+ million members. Swagbucks lets you earn FREE gift
cards for taking surveys, watching videos, shopping online and more!
The post SwagBucks Earn Free Gift Cards Online appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Atkins Quick Start Kit
Posted: 08 May 2016 10:00 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Sign up for a free Atkins quick-start kit, including a carb counter and a
printable BOGO coupon to get any Atkins product of equal or lesser value
for free. Free Atkins Quick Start Kit
The post Free Atkins Quick Start Kit appeared first on SweetFreeStuff.com.
CommentsLove it by LisaCan’t wait to try! by JENNIFER BURRELLI want to try
this. by maureenThank you! I got my quick start kit. by AizeI like it by
Bahjet Yousif


If you have a web site with lots of pages, you may wish to add some sort of pagination to each page.
A basic pagination in Bootstrap looks like this:
Add class .active
to let the user know which page he/she is on:
Add class .disabled
if link for some reason is disabled:
Pagination blocks can also be sized to a larger size or a smaller one:
Add class .pagination-lg
after .pagination
for larger blocks or .pagination-sm
for smaller blocks:
These are larger pagination blocks:
These are smaller pagination blocks:
The .breadcrumb
class indicates the current page's location within a navigational hierachy:


|
Conspiracy: "All our actions must be predicated
on law."
by F.C. DeCoste
So speaks SS Obergruppenführer
Reinhard Heydrich in this (HBO/BBC 2001), the second (afterHeinz
Schirk's 1984 German-language Wannseekonferenz), and very
much more accomplished, dramatic depiction of the Conference
of 20 January, 1942, at the Wannsee Haus in suburban Berlin,
concerning the fate of European Jewry. What was at issue at Wannsee
was not whether Jews would die -- the barbarity had already begun
some seven months earlier with the gassing of Jews at Chelmo
-- but rather whether the killing of Jews would be pursued as
state policy as regards all Jews and throughout the whole of
Europe under German occupation or influence. So there ensues,
in the film as it did in life, a discussion concerning whether
such a policy could sound in law and, if so, what law might then
mean.
The major players in this discourse
are Heydrich, head of the Reich Security Main Office and favored
deputy of Reichsführer SS Heinrich Himmler, as chair and
convenor (brilliantly delivered by Kenneth Branagh as Edith Wharton's
blond beast, a being at once carnal and cultured: in rejecting
sterilization as the answer to the "Jewish Question"
-- "Dead men don't hump. Dead women don't get pregnant.
Death is the most reliable form of sterilization. Put it that
way"; yet the adagio of Schubert's C Major String Quintet
remains for him, the concert-competent violinist, music to "tear
your heart out"); SS Obersturmbannführer Adolf Eichmann,
Heydrick subordinate and head of the Gestapo Jewish Evacuation
Office (here wonderfully rendered by Stanley Tucci, not merely
as the apotheosis of the suckup/kickdown bureaucratic functionary,
but in contrast to Branagh's Heydrich, with subtlety, as the
brutish and contemptuous common man: his sneering condescension
for the staff at Wannsee -- SS comrades one and all -- opens
the film (amid the hum of silver being polished, drapes drawn,
crystal cleaned, flowers arranged, name cards inscribed, wine,
cognac and cigars placed, and very German foods prepared, the
sound of broken wine glasses: Eichmann to what appears to be
the chief steward at Wannsee, "Do we have enough? How many
fell?"; "I'm sure we have a sizable inventory, sir";
"You're sure or you know?"; "I know sir";
"Itemize the cost. He pays. Make it a separate report to
me. And keep him where I don't see him"; then leeringly
to a female steward, his SS jacket held open in her arms ready
to envelope him properly for the meeting, "Smile. It is
a fine day"); and his venomous denunciation of Heydrich's
"passion for Schubert's sentimental Viennese shit"
very nearly concludes it); Dr. Wilhelm Stuckart, chief draftsman
of the Nuremberg Laws of 1935 and head of the Four Year Plan,
Ministry of the Interior (Colin Firth's wonderful performance
makes of Stuckart an Albert Speer, the squeamish in-but-not-of
Nazi); and Friedrich Wilhelm Kritzinger, Ministerial Director,
Reich Chancellery, representing Hitler (Jonathan Coy's portrayal
matches Firth's in excellence and in design).
That the Holocaust proceeded from a debate about the limits of
law may surprise those who, lead perhaps by the popular media,
take the Holocaust as an expression of mindless hatred. Many
may be surprised as well to discover -- as Raul Hilberg, the
dean of Holocaust studies, seeks always to remind us -- that
the Holocaust was a surprise to all involved, victims, bystanders
and perpetrators alike (indeed, Hilberg reports that Heydrich
himself was "ashen-faced" on first being informed that
the Final Solution meant the physical destruction of European
Jewry). However, conceiving of the Holocaust in any other fashion
-- as an orgy of murder rather than as an act of state framed
by the discourses of civilized life or as a vision pursued and
planned rather than as a sequence of events made possible, but
not inevitable, by certain moral and political commitments --
shelters us from the Holocaust's horrific historical and moral
burden: its revelation, as human possibilities, of a new form
of death, Vernichtung, death as manufacture, desacralized
and meaningless, nothing, and of a new form of being, Lebensunwertig,
life unworthy of life, meaningless even to itself, an insult
to life. It is its invention of these -- this understanding of
morality and this form of being -- that will forever burden Germany
with shame and guilt, and the rest of the world with an irreparable
harm, that insidious mistrust which ever since shrouds our sense
and experience of life.
That this film (directed by
Frank Pierson, and written by Loring Mandel: wonderfully and
intelligently by both) discloses that debate and surprise, and
in a manner that lays bare the intellectual and legal architecture
of the destruction that followed Wannsee, makes of it a towering
achievement, not least for lawyers. Indeed, for lawyers especially:
not only because seven of the Conference's fifteen participants
held advanced degrees in law (Stuckart; Kritzinger; Dr. Roland
Freisler, Ministry of Justice and later president of the People's
Court, the infamous Volksgerichtsgof; Dr. Josef Bühler,
representing Hans Frank, Governor General of Occupied Poland
and former Reich Minister of Justice and President of the Academy
of German Law; SS Oberführer Gerhard Klopper ("How
many lawyers are in this room? Raise your hand. Oh, Jesus Christ.
It's worse than I thought") director of the Party Chancellery's
legal division under Martin Bormann; and Drs. Karl Eberhard Schöngarth
and Rudolf Lange, SS Oberführer and Sturmbannführer
respectively and distinguished from other participants by their
service as commanders of Einsatzgrupppen murder battalions on
the Eastern Front (two other participants also held doctorates:
Alfred Meyer, a Ph.D. in political science, and Georg Leiberandt,
a combined doctorate in theology, philosophy, history and economics,
both representing the Reich Ministry for the Occupied Eastern
Territories); nor only because, as Hilberg puts it, "Lawyers
were everywhere and their influence was pervasive. Again and
again, there was a need for legal justification"; but also,
and perhaps more profoundly for the present, because the discourse
at Wannsee concerning law and the limits of power to perfect
the world and the place of difference in law remains for lawyers
central to their deciding whether lawyering has the point and
passion of an office or is instead a practice of service to power.
All of the lawyers at Wannsee,
save two, had no hesitation at all in affirming the latter: for
instance, Klopper (devastatingly delivered as corpulent -- yet
still sly and intelligent -- corruption by Ian McNeiece), "We
make the law we need" and, then, in response to Stuckart's
cri de coeur concerning "the obligation to maintain
a lawful society," "Fuck"; and Freisler (perfectly
played by Owen Teak as the banal, self-serving ideologue who
would later become Hitler's favorite legal executioner, presiding
as the screaming judicial interrogator at the show trials of
White Rose students Hans and Sophie Scholl in 1943 and of the
Bomb Plot accused in 1944), "Let's get it done, and if we
skip a few steps, so be it" and, then, "Well, the Ministry
of Justice which I represent, can live with it, gladly."
Indeed, it fell to Stuckart and Kritzinger alone among them to
carry law's brief against the legal cynicism and political millenarianism
of Heydrich. But Heydrich was to win the day, not only because
his cynicism would let loose brute power against his interlocutors
(Heydrich to Stuckart alone in conversation: "Every agency
will come to follow my order or asses will sting. And there are
no shortages of meat hooks on which to hang enemies of the state.
... You have a choice to make. ... I do not wish to see the bullies
-- I admit we have more than our fair share of them in the SS
-- take too much of an interest in you" "Interest in
me?" "Do you not think", drippingly, dropping
his cigarette at Stuckart's feet; to Kritzinger, again alone:
"You'd be a hard man to bring down, but certainly not impossible.
... Sitting again at that table, I will ask for your agreement
to what has been proposed." "And I must answer now?"
"Oh, you will answer now or you will answer later."
"I will not oppose you." "I want more than that."
"Of course." "Good. We understand each other."),
but also, and more instructively, because he, unlike they, blinded
each of them by personal and professional conceit, recognized
the inevitability of the destination -- as possibility, if not
always, as here, as practice -- bred of subordinating law to
power's ambition and of permitting law to take account of difference.
Just before the Conference
begins, Stuckart and Kritzinger share, sotto voce, conspiratorially,
their mutual disdain for their fellows, for the SS especially.
Stuckart to Kritzinger: "It is very complex. These laws,
a lot of time and thought has been put to them and some of these
here -- well you notice all the SS -- have little idea of what
is lawful in their respect for what they do." Kritzinger:
"Certainly not these gentlemen. To them the laws are like
ice cream. Easy to melt." Heydrich knows his quarry well,
and showing false and indeed silly, and then destroying, this
elitism -- about intelligence about and commitment to the law
-- becomes the focus of his conduct of the meeting.
Good manager he, he first recounts the path of the Reich's Jewish
policy: first the Nuremberg Laws, which aimed "to expel
them from all means by which our people would have to deal with
them" and "established the fundamental legality for
the creation of a Jew-free society" and then the pursuit
of "a vigorous policy of emigration" ("But who
would take more of them? Who would want them was the policy's
ultimate limitation. Every border ... rejects them. Even America.")
and finally the consequences of the Reich's military successes
in Poland and in the East ("The dimensions of this problem
... have magnified astoundingly: five million!"). The past
to which all present, Stuckart and Kritzinger especially included,
had consented, thus recalled, Heydrich commences with the Reich's
response to "this new situation" as expressed in Reichmarshall
Hermann Göring's directive of 31 July, 1941 to himself --
"you have a copy in your folders" -- "the operative
words ... 'bringing about a complete solution to the Jewish Question
in the German sphere of influence in Europe.'" Heydrich:
"Now, for that I read the cleansing of the entire continent
of Europe. ... All of Europe.... No Jews. Not one." Then:
"The policy that will take the place of emigration is evacuation";
and "Everything we have done flows from the Nuremberg Laws....
And now we have to examine those. ... The exemptions written
into the law allow too many Jews to remain among us." Thus,
does he confront the law, in stages and by manoeuvre: now, it
remains only for the Conference to determine the meaning of evacuation
and the future warrant of the Law.
Lange (remarkably delivered
by Barnaby Kay as a near sullen mix of lawyer and murderer) puts
the question to Heydrich: "Dear General, sorry. I have the
real feeling I evacuated thirty thousand Jews already by shooting
them at Riga. Is what I did evacuation? When they fell were they
evacuated?" Heydrich: "Yes, in my personal opinion,
they are evacuated." Kirtzinger: "Explain!" "I
have just done so." "That is not.... No, that is contrary
to what the Chancellery has been told. I have directly been assured,
I have, that .... Purge the Jews, yes. But to annihilate them
... That we have undertaken to systematically annihilate all
the Jews of Europe, no that possibility has personally been denied
to me by the Führer." Heydrich with bemused condescension:
"And it will continue to be." "Yes, I understand.
Yes, he will continue to deny it." Heydrich with barely
concealed contempt: "My apologies. Do you accept my apologies?"
Then Stuckart on the meaning
of Law: "The Nuremberg Laws are very specific. ... I find
the plan unworkable. I find the plan personally insulting in
that I have given years to codifying the laws.... My work, these
laws, any legal code worthy of the name restricts the enforcers
of it as well as its subjects. There are some things you cannot
do." Heydrich: "As you see it." Stuckart, lecturing:
"To kill them casually without regard for the law, martyrs
them which will be their victory. Sterilization recognizes them
as a part of our species but prevents them from being a part
of our race. They will disappear soon enough. And we will have
acted in defense of our race and of our species and by the law."
Then less: "I'm pointing out the difficulty of casting every
Jew ... into the sausage machine, and if that's the plan, I'm
asking that some legal framework be built." Kritzinger at
one point in support: "He believes in the supremacy of law.
... You accept casually the obliteration of legal distinctions
and the use of extreme, inconceivable measures. ... That is where
we have come."
But all of this protest is
posture. The proof lies not in their revealing themselves as
cowards in collapsing before Heydrich's threats, but in their
refusing to acknowledge that their National Socialist commitments
-- to the Nuremberg Laws, to the Führer, to political millenarianism
-- meant the death of law and of their professional commitments,
save each as private conceit or else, as here, as public petulance.
In this, by contrast, Heydrich is wise. To Kritzinger: "This
is the moment to be practical until such time as Germany can
afford your philosophy, which is what? Hound them, impoverish
them, exploit them, imprison them, just do not kill them and
you are God's noblest of men. I find that truly remarkable."
To all a reminder of Führerprinzip: "I would
like to remind all of you that our Führer enunciates the
goal. Our task, to turn his vision to reality. We can debate
the 'how'; we can debate the 'when' up to a point; we cannot
debate the 'if'. ... His word is above all written law."
To Lange, his self-understanding: "Beautiful lake. When
the War ends, I shall come to this house and rise to see it every
day and dream comforting things. I am a dreamer as I think you
are. ... We look forward to a better day, a peaceful world, a
German culture triumphant. That is what we work for. ... We are
servant soldiers, are we not? ... That is what we are indeed."
(Heydrich was not, of course, to live his dream: Reinhard Tristan
Eugen Heydrich -- Protector of Bohemia and Moravia and Himmler's
trusted organizer of the machinery of genocide -- was to die
on 4 June, 1942 from injuries sustained in the British organized
assassination attempt of 27 May.) Then, to all, the "triumphant
German vision": "So this is my commandment to you here.
Link arms, your units, your ministries, apply your intelligence,
apply your energies. The machinery is waiting. Feed it. Get them
on the trains. Keep the trains rolling. And history will honour
us for having the will and the vision to advance the human race
to greater purity in a space of time so short Charles Darwin
would be astonished."
At Wannsee, these core elements
of Hitlerism -- collective, identity-based difference, authoritarianism,
and utopianism -- became radicalized. Wannsee was the Hitler
revolution, and with it, the world changed (Kirtzinger to Lange:
"This is more than war. Must be a different word for this").
Thereafter, Jewish difference became Otherness, and radicalized
Otherness meant legal nudity, a flagrant, utter, exposure to
the claims of insistent and ubiquitous power. The Führerprinzip
ceased to serve as a vague grundnorm and became instead
cause for a false legality characterized by prerogative law and
unrestrained interpretation by ideologically driven judges, lawyers,
and legal scholars. And now taken seriously, the millenarianism
championed in Mein Kampf made the inconceivable conceivable:
Eichmann, "We expect to be able to process 2500 an hour,
not a day"; someone, "Sixty thousand Jews a day go
up in smoke!"; Heydrich, "We can achieve that. Imagine."
Imagine. And yet we continue
to imagine that somehow the law can make whole the world, that
it can count and construct difference, that its constraint is
properly, electively, porous: like they before us, provided only
the cause be right and the warrant redemption.
Posted August 1, 2003
|


io.js
is a JavaScript platform that is compatible with Node.js & npm.
The initial 1.0.0 release is planned for January 13, 2015.
Nightly releases are avaliable for testing.
io.js
contributions, releases, and contributorship are under an open governance model.


Cop or Drop
Come see what is hot in the game, and what's not.
Add a Sneaker
Add your name and a summary/explanation of the shoe here!


You will have 75 seconds to answer four Javascript related questions. Wrong answers will penalize you with a reduction of 10 seconds. Have fun and happy coding!
Score:
Please enter intials: Submit!


function fid_R134a extends Modelica.Icons.Function; input Real delta "Reduced density (delta=d/dcrit)"; input Real tau "Reduced temperature (tau=Tcrit/T)"; output Modelica.Media.Common.HelmholtzDerivs fid "Helmholtz derivatives of ideal part"; end fid_R134a;


CoffeeConvo
Beans
Vibe
Pricing
Snacks
Contact Us
If you want to build something similar, go to
Code Fellows 101
class in Seattle!


This is an extension of the Switch component present in fundamental-ngx/core.
The Platform Switch component implement the FormFieldControl interface, thus can be used within the FormField component.


The PreClearance screen allows access persons or compliance officer to input preclearence requests, gifts, and holding adjustment transactions. Each transaction will validate against the firm rules and generate transaction status. Access persons or compliance officers also are able to check the validation status, add comments, and attached supporting documents. All of these are logged for audit.
Click the PreClearance in the left navigation menu under Access Person and a new PreClearance Tab folder will be created in the right panel. There are 3 sub-Tab folders: Search PreClearance, Search Result PreClearance and Create New PreClearance.
Search Criteria
| Field Name | Description |
|---|---|
| Tranaction ID | Transaction unique record identifier. |
| Access Person | The access person that request the transaction. |
| Broker Account | The broker account number. |
| Entry Date | The request date. |
| Symbol | The symbol of the security. |
| Security Name | The name of the security. |
| Event Type | Transaction event type; eg preclearnce, gift or holding adjustment. |
| Status Code | The status of this transaction; eg approved. denied, cancelled, etc. |
| Org Unit Code | The org unit this transaction belongs to. |
| AND | Select AND radio box if you want those criteria added together. |
| OR | Select OR radio box if you want to get the result if either of the criteria are met |
The top part is the table which shows the list of the PreClearance that meet the search criteria. The bottom part is the details, Rule Validation, Document, Email, and Action Logs of the selected entry.
Double Click the selected record in the table to modify this entry. A new tab folder “Update/Delete PreClearance” will be added, as shown below.
Select the “Create New PreClearance” Tab to create a new entry.
| Field Name | Description |
Tranaction ID Transaction unique record identifier. Event Type Transaction event type; eg preclearnce, gift, or holding adjustment. Access Person The access person that request the transaction. Broker Account The broker account number. Symbol The Symbol of the security. Security Name The name of the security. Entry Date The request date. Transaction Type The Transaction Type:bBuy or sell Option Flag Check if it is an option, the option symbol and option type are disabled when option flag is unchecked. Option Symbol The option security symbol. Option Type The type of the option, PUT or CALL. Sec Offer Flag Check if it is secondary offer. Ipo Flag Check if it is IPO. Private Offer Check if it a private offer. Activity Type Type of activity; it can be used in the rule builder. Order Type The trade order type. Currency Currency used in this transaction. Request Shares Number of shares. Principal Amt Principal amount. Assigned To Assign to person for approval, if needed. Email will be sent. Assigned ToGroup Assign to group for approval, if needed. eEmail will be sent. Action Reason Select a reason from the dropdown. Org Unit Code The org unit this transaction belongs to. ================ ========================================================================================================
Each new transaction will validate against the firm employee trade rules and generate transaction status. Please see Detection Builder section for details.


×
Welcome,
Marsha
×
To Do List
2
Create Checklist
Checklist
High
My first task
This is the first note on my new task. Checklist To Do List
5
notes
15
issues
updated
3h ago
High
My first task
This is the first note on my new task. Checklist To Do List
5
notes
15
issues
updated
3h ago


+++ title = "Matt and Dave" slug = "matt-and-dave" date = 2007-06-13T12:00:00+10:00 tags = ["pampas", "eccentric-encounters", "fellow-travellers", "aussies"] locations = ["bolivia/rurrenabaque"] draft = false summary = """
Two giant, beer-swilling young physiotherapists from Melbourne. These guys were with us on the pampas trip this week, and they proved to provide us with constant entertainment. Always doing such classic Aussie things as randomly jumping in the river and going for a swim; catching small animals and insects; and not being able to fit in their boots. They also found a baby anaconda, all by themselves.
""" +++Two giant, beer-swilling young physiotherapists from Melbourne. These guys were with us on the pampas trip this week, and they proved to provide us with constant entertainment. Always doing such classic Aussie things as randomly jumping in the river and going for a swim; catching small animals and insects; and not being able to fit in their boots. They also found a baby anaconda, all by themselves.
{{< galleryphoto "2007-06-13-12-00-00--matt-and-dave-in-the-4x4-en-route-to-the-pampas.jpg" >}}


Reports the assignment of a variable to
null, outside of declarations.
While occasionally useful for triggering garbage collection, this
construct may make the code more prone
to NullPointerExceptions, and often indicates that the developer doesn't
really understand the class's intended semantics.
Use the checkbox below to ignore assignments to fields.
Powered by InspectionGadgets


In the true spirit of open source software, these slides and exercises have built upon from the work of numerous authors who have shared their work online. Many thanks in particular to the following R instructors for sharing their workshop materials:
Eric Anderson (NOAA)
Simon Ejdemyr (Facebook & Stanford)
Claudia Engel (Stanford)
Nick Eubank (Stanford)
Patty Frontiera (UC Berkeley)
Manuel Gimond (Colby College)
Chris Paciorek (UC Berkeley)
Zev Ross (ZevRoss Spatial Analysis)
And many more!


Use SemanticTextQuery.Find() to select matching ranges of text in a block of text.
Mount Rainier is on the North American Continent.


|
|
|
|
|
xml(self,
resource,
start=None,
limit=None,
marker=None,
msince=None,
show_urls=True,
dereference=True,
stylesheet=None,
as_json=False,
pretty_print=False,
**args)
Export a resource as S3XML |
source code
|
|
|
|
csv(self,
resource)
Export resource as CSV (does not include components) |
source code
|
|
|
|
pdf(self,
resource,
list_fields=None)
Export a resource as Adobe PDF (does not include components!) |
source code
|
|
|
|
xls(self,
resource,
list_fields=None)
Export a resource as Microsoft Excel spreadsheet |
source code
|
|
|
|
json(self,
resource,
start=None,
limit=None,
fields=None,
orderby=None)
Export a resource as JSON |
source code
|
|
|
Inherited from object :
__delattr__ ,
__format__ ,
__getattribute__ ,
__hash__ ,
__new__ ,
__reduce__ ,
__reduce_ex__ ,
__repr__ ,
__setattr__ ,
__sizeof__ ,
__str__ ,
__subclasshook__
|


{{#username}} Hello {{username}} ! {{/username}} {{^username}} Login with google Login with twitter Login with facebook The links above are the links set in the "loginUri" key in the lib/config.js file {{/username}}


C Interface
#include <papi.h>
const PAPI_hw_info_t *PAPI_get_hardware_info(void);
Fortran Interface
#include fpapi.h
PAPIF_get_hardware_info(C_INT ncpu, C_INT nnodes,
C_INT totalcpus, C_INT vendor,
C_STRING vendor_string, C_INT model,
C_STRING model_string,
C_FLOAT revision, C_FLOAT mhz)
The following arguments are implicit in the structure returned by the C function,
or explicitly returned by Fortran.
ncpu -- number of CPUs in an SMP Node
nnodes -- number of Nodes in the entire system
totalcpus -- total number of CPUs in the entire system
vendor -- vendor id number of CPU
vendor_string -- vendor id string of CPU
model -- model number of CPU
model_string -- model string of CPU
revision -- Revision number of CPU
mhz -- Cycle time of this CPU; *may* be an estimate
generated at init time with a quick timing routine
mem_hierarchy -- PAPI memory heirarchy description
const PAPI_hw_info_t *hwinfo = NULL;
if (PAPI_library_init(PAPI_VER_CURRENT) != PAPI_VER_CURRENT)
exit(1);
if ((hwinfo = PAPI_get_hardware_info()) == NULL)
exit(1);
printf("%d CPUs at %f Mhz.\n",hwinfo->totalcpus,hwinfo->mhz);
The C data structure returned by this function is found in
papi.h and reproduced below:
typedef struct _papi_mh_tlb_info {
int type; /* See papi.h for PAPI_MH definitions. */
int num_entries;
int associativity;
} PAPI_mh_tlb_info_t;
typedef struct _papi_mh_cache_info {
int type; /* See papi.h for PAPI_MH definitions. */
int size;
int line_size;
int num_lines;
int associativity;
} PAPI_mh_cache_info_t;
typedef struct _papi_mh_level_info {
PAPI_mh_tlb_info_t tlb[2];
PAPI_mh_cache_info_t cache[2];
} PAPI_mh_level_t;
typedef struct _papi_mh_info { /* mh for mem hierarchy maybe? */
int levels;
PAPI_mh_level_t level[PAPI_MAX_MEM_HIERARCHY_LEVELS];
} PAPI_mh_info_t;
typedef struct _papi_hw_info {
int ncpu; /* Number of CPUs in an SMP Node */
int nnodes; /* Number of Nodes in the entire system */
int totalcpus; /* Total number of CPUs in the entire system */
int vendor; /* Vendor number of CPU */
char vendor_string[PAPI_MAX_STR_LEN]; /* Vendor string of CPU */
int model; /* Model number of CPU */
char model_string[PAPI_MAX_STR_LEN]; /* Model string of CPU */
float revision; /* Revision of CPU */
float mhz; /* Cycle time of this CPU, *may* be estimated at
init time with a quick timing routine */
PAPI_mh_info_t mem_hierarchy; /* PAPI memory heirarchy description */
} PAPI_hw_info_t;


2017-2020 ST PAULS UNIVERSITY
BACHELORS DEGREE IN COMPUTER SCIENCE
2013-2016 - MUGOIRI GIRLS HIGH SCHOOL
2003-2012 - KANDUTURA PRIMARY SCHOOL
HTML
CSS
JAVASCRIPT
USER INTERFACE DESIGN
VUEJS
PYTHON
PHP
LISTENING TO MUSIC
CLEANING
DESIGN
WATCHING MOVIES
GOOGLE RESERCH
EDITING
SLEEPING
In my learning journey on the above tools, i have over the past,made efforts to develop web-based applications. Below are my highlighted software applications.
ANITAS KITCHEN
FAVOURITE BAND/b>
STARDELIC RESTAURANT


This creates a modal window asking users to enter a 4 digit password. You can have boxed keys or rounded. The password is 1111 Show Lock Screen Show Lock Screen (rounded)


One school of thought states that the motivation behind much of our normal behaviour – taking photographs, getting married – is essentially a stab at immortality: a way of creating witnesses to the tiny dent we made in the universe.
As we've discussed on MONTAG before, one day we may well become immortal (at least, in the eyes of everyone else) but until then, in the spirit of futurism, shouldn't we be finding better ways to dispose of ourselves?
Kathryn Lawrence found that our traditional "burn or bury" options seem a little dated when you could be heated to thousands of degrees, squashed to thousands of atmospheres, or blasted thousands of kilometres away...
There's a German phrase akin to the aphorism "You can't take it with you": "Das letzte Hemd hat keine Taschen." Literally, "the last shirt has no pockets."
Both expressions refer to the morbid reality that even though we spend so much of our lives accumulating material possessions and caring for our bodies, the great equalizer, death, does not allow us to keep these things – in Western cultures, that is.
Most people are familiar with Egyptian burial practices, in which effigies of the dead's material belongings (and even their pets), were included in the burial so they could accompany them to the next life. Offering grave goods such as "hell money," fake cash burnt as offerings to one's ancestors, is still a very common practice in Asia. And the tradition of leaving coins on the eyes or in the mouth of the deceased in order to pay for the ferry into the underworld goes back to ancient Greece.
But in the modern Western world, we have no such transference of material goods into the afterlife (if you even believe in one). What we do have are a bunch of new practices to figure out what to do with what you leave behind: how do you want to recycle your personal carbon?
Shoot For The Stars
One of the first science fiction writers to propose burial in space was Neil Ronald Jones. In "The Jameson Satellite," first published in 1931's Amazing Stories, a scientist named Professor Jameson seeks to preserve his body by sending it on a satellite, and is revived by interplanetary visitors millions of years afterwards.
Illustration from "The Jameson Satellite" via Project Gutenberg
Established in 1994, Celestis memorial spaceflights has made this science fiction dream a reality, but they won't send your entire body to be revived by aliens in the far future. What they can do is launch "a symbolic portion" of cremated remains into space with a commercial or scientific satellite.
Celestis offers several different space burial packages: the Earth Rise, for $1,295, flies you up far enough to experience zero gravity and then come back down (much like the Zero Gravity Flights parabolic flight experience, but with significantly less chance of vomiting).
The Earth Orbit package, for $4,995, shoots you into the atmosphere where you will later "harmlessly vaporize like a shooting star in final tribute" upon re-entry. The Luna Service and Voyager Service both cost $12,500 and Luna will land you on the moon, whereas Voyager will let you go further: both programs are the same price because they ride along with capsules that are being sent to the moon or deep space for scientific purposes anyway.
Friends and family are invited to view the memorial launch, and if they can't attend, a live, global webcast of the launch is also available.
Celestis DNA is also available to those who do not choose cremation. They send a cheek swab up instead, and this program seems to be not only for memorial purposes, as one of the advertised benefits is "off-planet DNA storage and preservation," – so the Jameson Project's goal is not so far off.
Perhaps if an alien race were to harvest some of your DNA out of a satellite remaining in the Earth's atmosphere, you could be revived via cloning. Arthur C. Clarke provided a strand of his hair as a DNA sample for a Celestis flight in 1999, and is quoted upon supplying the donation, "I'd give you more, but I don't have anything to spare."
Arthur C. Clarke via Wikispaces
Another company named Elysium Space launched in 2013, offers a similar space-burial service for $1,990. They also provide loved ones with an app that can track your memorial satellite as it traverses the Earth's atmosphere in real time.
In 2014, Celestis launched Celestis Pets, and they have stated that any inclusion of animal remains before this point was in violation of their policy, after it was rumored that the ashes of Bismarck, a police dog from Monroe, Washington were stowed away on a 2012 flight.
Several notable individuals have already been buried in space. Star Trek creator Gene Roddenberry and James Doohan, the original Scotty from Star Trek, who passed in 2005, are both in Earth orbit along with American psychedelic philosopher Timothy Leary.
Dr. Eugene Shoemaker, an astronomer famed for co-discovering the Shoemaker-Levy 9 Comet, rests on the moon. And Clyde Tombaugh, who discovered Pluto, was sent into deep space on the New Horizons craft, the first to pass by and photograph the now-demoted dwarf planet that he called "Planet X."
In 2012, a delegate from the state of Virginia proposed tax breaks for space burials, but the policy looks like it didn't make the books.
However, as space flight gets cheaper and more commonplace due to Elon Musk's relentless drive to return to his home planet – and the rest of us fleeing the consequences of global warming or other man-made Earth-bound catastrophes – many more people may choose their final resting place off-world.
Shine Bright Like A Diamond
Another increasingly popular transmutation of the human body is compression into a diamond after cremation. Several companies such as Cremation Solutions, LifeGem, Heart in Diamond, and Algordanza offer this service.
The human body is 18% carbon. 2% of this carbon remains after cremation, and it is this carbon that Algordanza uses to make their diamonds
Cremation Solutions' website explains the process:
- Step 1: Place several ounces of the ashes in a crucible that can withstand massive heat.
- Step 2: Bring the temperature to just over 5,000 degrees fahrenheit, and allow all of the elements except the carbon to oxidize.
- Step 3: Continue to heat until the carbon has turned to graphite. The entire heating process will take a few weeks.
- Step 4: Place the graphite in a core with a metal catalyst and a diamond seed crystal.
- Step 5: Place the core in a diamond press.
- Step 6: Bring the temperature to about 2,500 degrees fahrenheit and the pressure to about 800,000 pounds per square inch. Allow several weeks for the graphite to turn into a rough crystal.
- Step 7: Remove the crystal and use faceting tools to cut it to your specifications.
Both Cremation Solutions and Heart in Diamond emphasize that while these synthetic diamonds have all the natural properties of a girl's best friend, they are more kind to the earth and lack the exploitative labor practices of diamond mining to produce.
Depending on color, cut, clarity, and carat size, individual diamonds go from $750 to $24,999, and that's only for the diamond, not including the setting or jewelry.
While some synthetic diamond creation processes allow for the addition of chemicals to color the diamond, Algordanza's process uses the natural beauty of the boron content of the deceased's ashes to bring out the color, which can range from white to dark blue.
And is this process also available for pets? You bet.
"LifeGem for Pets? Of course."
At LifeGem, we understand that pets are cherished companions and unconditionally loving family members. Since introducing the LifeGem to the world, we have received thousands of requests to memorialize pets as LifeGems. The answer is YES, we absolutely can and will create a LifeGem memorial of your precious pet.
Something's Gonna Steal Your Carbon
Can't decide between cremation and giving your body back to the Earth the old fashioned way? A Swedish process called Promession offers an eco-friendly alternative.
Invented by biologist and avid gardener Susanne Wiigh-Mäsak, the promession process involves freezing the body using liquid nitrogen to a temperature of -196º C, and then using powerful vibrations to break it into a fine powder. The powder is then freeze-dried again and processed to remove any metals that are remaining in the mixture from prosthetics, tooth fillings, or other bits that could harm the soil.
This powdered and reduced substance is then placed in a biodegradable container and buried shallowly so that the remaining minerals are in contact with the topsoil and are readily available for plant life. Between six to eighteen months later, the container and all of the materials it contains will have been recycled.
Wired reported on the process back in 2013, and uncovered conflicting information as to its effectiveness: while it was tested extensively on pigs, its use for humans has yet to be proven since human testing is still illegal, and a source from the Federation of Cemeteries and Crematoria of Sweden claimed that some deceased people who intended to use the process have had their bodies frozen for 10 years and are still waiting to be promessed.
"Capsula Mundi" via New York Post
In the mean time, people are still coming up with interesting, eco-friendly ways to use the human body to nourish the Earth. The "Capsula Mundi", created by Italian designers Anna Citelli and Raoul Bretzel looks like an egg, and envisions a future where cemeteries would consist of hundreds of trees being nourished by seed pods containing human remains.
Of course there's no cure for death that we know of (yet) but who knows what the future may hold?
Those people who are currently frozen and waiting to be involved in a more eco-friendly burial process, could be on the first step to cryogenics, which would make the Jameson Project a reality without spaceflight: reviving the terminally ill from a frozen state of stasis when a cure has been found for their disease.
Until then, becoming a shooting star, a shiny rock, or plant food are all pretty cool options as something to do with what you leave behind. You can't take it with you, but giving is always better than taking, anyway.


I Have a Secret for You: Golden Retriever Sharing a Kiss and Maybe 'Dog-Whispering'
Our canine friends are very smart and seem to understand a lot of things. Unfortunately, they can’t speak, but who knows if it's possible for them to share important information in other ways?
These golden retrievers seem to be sharing some juicy gossip, or really important news, whispering some secrets… or, maybe, the doggo is just kissing its friend's ear out of affection. This is typical for golden retrievers, always ready to hug, kiss and show there love!


Co-designing efficient machine learning based systems across the whole hardware/software stack to trade off speed, accuracy, energy and costs is becoming extremely complex and time consuming. Researchers often struggle to evaluate and compare different published works across rapidly evolving software frameworks, heterogeneous hardware platforms, compilers, libraries, algorithms, data sets, models, and environments.
We present our community effort to develop an open co-design tournament platform with an online public scoreboard. It will gradually incorporate best research practices while providing a common way for multidisciplinary researchers to optimize and compare the quality vs. efficiency Pareto optimality of various workloads on diverse and complete hardware/software systems. We want to leverage the open-source Collective Knowledge framework and the ACM artifact evaluation methodology to validate and share the complete machine learning system implementations in a standardized, portable, and reproducible fashion. We plan to hold regular multi-objective optimization and co-design tournaments for emerging workloads such as deep learning, starting with ASPLOS'18 to build a public repository of the most efficient algorithms and systems which can be easily reused and built upon. We will also use the feedback from participants to continue improving our platform and common co-design methodology.
Machine learning has undergone a rapid pace of progress
over the recent years. Rarely in the scientific community have
we witnessed such a concerted effort from various communities
(machine learning, systems, hardware, security, programming
languages etc.) in improving the performance, accuracy,
robustness and cost of machine learning based systems.
However, implementing such systems for a given problem
(for example, deep learning algorithm for ImageNet classification),
one has to navigate a multitude of design decisions:
what network architecture to deploy and how to customize it (ResNet vs. MobileNet),
what framework to use (MXNet vs. TensorFlow),
what libraries and which optimizations to employ (MKL vs. OpenBLAS),
which is generally a consequence of the target
hardware platform (Intel Xeon + NVIDIA GPU vs. ARM-based mobile SoC).
On top of these implementation decisions,
platform-specific decisions may affect the performance and
overall experience in deploying the system in question:
details such as operating system, kernel version, framework
and library versions or dependencies, and custom optimizations.
As a result a given system implementation (for example, ResNet
on TensorFlow on a Intel + NVIDIA hardware system) can have
many incarnations, some of which may have drastically
different performance results.
Furthermore, as more papers are being published, it also becomes
challenging to reproduce, reuse, build on top of, and perform
fair comparisons of numerous machine learning techniques
across rapidly evolving systems.
As multiple communities tackle the same challenges
of making machine learning systems
faster, cheaper, smaller, more accurate, and more energy efficient
across diverse platforms from IoT to data centers,
we need a platform to automate and perform apples-to-apples comparisons
of different approaches that aim to achieve the same goal.
For example, how does an approximate analog accelerator
for deep learning compare to algorithmic simplifications
on off-the-shelf hardware in terms of accuracy vs. efficiency
Pareto optimality?
We therefore propose the Reproducible Quality-Efficient Systems
Tournament (ReQuEST) as a community-driven platform
for reproducible, comparable, and multi-objective
optimization of emerging workloads
[1].
We plan to host ReQuEST as a bi-annual workshop alternating
between systems and machine learning communities.
Its first incarnation will take place at ASPLOS in March 2018
and will focus solely on optimizing inference on real systems
to test our platform and use the feedback from participants and
an industrial board
to improve it.
We detail in the next sections how its objectives and
execution differentiate ReQuEST from other existing workshop-based
competitions.
Summary: ReQuEST is aimed at providing a scalable tournament framework,
a common experimental methodology and an open repository for continuous evaluation
and optimization of the quality vs. efficiency Pareto optimality of a wide range
of real-world applications, libraries, and models across the whole
hardware/software stack on complete platforms as conceptually shown
in Figure 1.
Tournament framework goals: we want to promote reproducibility
of experimental results and reusability/customization of systems research artifacts
by standardizing evaluation methodologies and facilitating the deployment
of efficient solutions on heterogeneous platforms.
For that reason, packaging artifacts and experimental results requires a bit more
involvement than sharing some CSV files or checking out a given GitHub repository.
That is why we build our competition on top of an open-source
and portable workflow framework (Collective Knowledge or CK [2])
and a standard ACM artifact evaluation methodology [3]
from premier ACM systems conferences (CGO, PPoPP, PACT, SuperComputing)
to provide unified evaluation and a live scoreboard of submissions
as demonstrated in Figure 2.
CK is a Python wrapper framework to share artifacts and workflows
as customizable and reusable plugins with a common JSON API and meta description,
and adaptable to a user platform with Linux, Windows, MacOS and Android.
For example, it has already been used and extended in a number of academic and industrial projects
to automate and crowdsource benchmarking and multi-objective optimization of deep learning
across diverse platforms, environments, and data sets.
Figure 2 shows a proof-of-concept example of a live scoreboard
powered by CK to collaboratively benchmark inference (speed vs. platform cost)
across diverse deep learning frameworks (TensorFlow, Caffe, MXNet, etc.),
models (AlexNet, GoogleNet, SqueezeNet, ResNet, etc.), real user data sets, and mobile devices
provided by volunteers (see the latest results at cKnowledge.org/repo).
Metrics and Pareto-optimality goals: we want to stress
quality-awareness to the architecture/compilers/systems community,
and resource-awareness to the applications/algorithms community and
end-users. The submissions and their evaluation metrics will
be maintained in a public repository that includes a live
scoreboard.
Specific attention will be brought to submissions
close to a Pareto frontier in a multi-dimensional
space of accuracy, execution time, power/energy consumption,
hardware/code/model footprint, monetary costs etc.
Application goals: in the long term, we will
cover a comprehensive suite of workloads, datasets and models
covering applications domains that are most relevant
to machine learning and systems researchers.
This suite will continue evolving according
to feedback and contributions from the academia and industry.
All artifacts from this suite can be automatically plugged
in to the ReQuEST competition workflows to simplify and automate
experimentation.
Complete platforms goals: we aim to cover
a comprehensive set of hardware systems from data-centers down
to sensory nodes, incorporating various forms of processors
including GPUs, DSPs, FPGAs, neuromorphic and even analogue
accelerators in the long term.
Our goal is to bring multi-disciplinary researchers to
\begin{enumerate}
We want to set a coherent research roadmap for
researchers by hosting bi-annual tournaments complemented with
panel discussions from both academia and industry. We hope
that as participation increases, the coverage of problems
(vision, speech and even beyond machine learning) and
platforms (novel hardware accelerators, SoCs, and even exotic
hardware such as analog, neuromorphic, stochasticm, quantum) will increase.
ReQuEST is organized as a bi-annual workshop, alternating
between systems-oriented and machine learning-oriented
conferences. The first ReQuEST workshop will be co-located
with ASPLOS in March 2018. The workshop will aim to present
artifacts submitted by participants, along with
a multi-objective scoreboard, where quality-efficient
implementations will be rewarded.
The submissions will be validated by an artifact evaluation committee,
and participants will have the chance to get an artifact paper
published as ACM proceedings.
In addition we wish to nurture
a discussion ground for artifact evaluation in multidisciplinary
research, gathering perspectives from machine learning,
systems, compilers and architecture experts.
We will use this discussion to continuously improve and extend
functionality of our tournament platform.
For example, we plan to gradually standardize the API and meta description of all artifacts
and machine learning workflows with the help of the community,
provide architectural simulators and simulator-based evaluations,
cover low-level optimizations, expose more metrics, and so on.
Finally, an industrial panel composed of research-representatives from
prominent software and hardware companies will discuss how
tech-transfer can be facilitated between academia and
industry, and will help craft the roadmap for the ReQuEST
workshops by suggesting new datasets, workloads, metrics, and
hardware platforms.
1 Introduction
2 Main goals
3 Future work
References
[1] ReQuEST Initiative.
ReQuEST: open tournaments on collaborative, reproducible and
pareto-efficient software/hardware co-design of emerging workloads using the
collective knowledge technology.
Link, 2017--present.
[2] G. Fursin, A. Lokhmotov, and E. Plowman.
Collective Knowledge: towards R&D sustainability.
In Proceedings of the Conference on Design, Automation and Test
in Europe (DATE'16), March 2016.
[3] Artifact Evaluation Initiative.
Artifact Evaluation for computer systems conferences.
Link, 2014--present.


Building an attractive and dynamic digital product is not an easy task.
Taking an idea from the blank page to a working digitally native artefact is complicated and subtle. Pali solves that problem
We bring expertise to our client’s vision and turn it into working proposition.
Pali is a product consultancy and engineering firm. That means we try to build the absolute best products. We wake up each morning excited to build thoughtful proposition customers want to use.


Asia-Pacific Working Group
Our group caters for the MD4SG community in the Asia Pacific region. Because we are on the opposite side of the globe to the United States, our timezone is not a good match for many MD4SG events. We meet online every second Tuesday at 16h00 AEST. Please contact the working group organizer if you would like to join the group. We focus on a variety of topics, much like the very first MD4SG working group.
Summary of the 2020 sessions
Market Design in Education
Led by Kentaro Tomoeda.
Reading: What Really Matters in Designing School Choice Mechanisms by Parag Pathak.
Highlights:
- In designing school choice mechanisms, what's important in theory may not be important in practice... getting involved with implementing a mechanism highlights these cases.
- Strategyproofness (best response is to report the truth) does not guarantee truthful reporting in practice.
Diversity in Education Markets
Led by Emil Temnyalov.
Reading: "Explicit vs. Statistical Targeting in Affirmative Action: Theory and Evidence from Chicago's Exam Schools" (2020) by by Umut Dur, Parag Pathak and Tayfun Sönmez.
Highlights:
- Subtle details of mechanisms can have big impacts on outcomes. These details can be used as a lever for policymakers.
Fairness and Predictive Policing
Led by Ashley Khor.
Readings: A Snapshot of the Frontiers of Fairness in Machine Learning by Alexandra Chouldechova and Aaron Roth and page 131-141 of Predictive Policing: The Argument for Public Transparency by Erik Bakke.
Highlights:
- Concern that profit driven organisations generate most of the predictive solutions. Should there be more citizen involvement and oversight? The article by Erik Bakke suggests that transparency should be a mandatory feature of predictive policing.
- Open question on what the normative properties a predictive policing algorithm should satisfy.
Defining Fairness
Led by Jaeho Lee.
Reading: Prediction-Based Decisions and Fairness: A Catalogue of Choices, Assumptions, and Definitions by Shira Mitchell, Eric Potash, Solon Barocas, Alexander D'Amour, and Kristian Lum.
Highlights:
- The current ML pipeline imposes unintended fairness threats that are often hard to detect or quantify. Even the clearest cases have subtle issues.
- Impossibility results show that some definitions of fairness cannot be satisfied simultaneously.
Applications of Remote Sensing
Led by Gabriel Tseng.
Reading: Machine learning can help get COVID-19 aid to those who need it most by Joshua Blumenstock.
Highlights:
- Many regions, especially in Africa, have a lack of training data for remote sensing, a challenge which Gabriel has faced in his own work. Gabriel described how he tackled this challenge when his team was asked to deliver maps of farms for the Togolese government in rapid time.
- Can remote sensing allow us to sidestep the information assymetry at the heart of many mechanism design problems?
Foster Care
Led by Allan Hernández-Chanto.
Reading: Review of the Foster Care System by the Queensland Family & Child Commission
Highlights:
- The foster care system has unique characteristics that differ from popular applications of market design, such as school choice. The system is complex, has many stakeholders, involves a dynamic matching problem, and has multiple avenues to exit the system.
- Allan described the foster care system in Queensland. He noted that it has become increasingly difficult for the state to recruit foster parents.
Working Group Organizer
| Matthew Olckers | Postdoctoral Researcher | Monash University |
Working Group Members
| Alexander Lam | Graduate Student | UNSW |
| Irene Lo | Assistant Professor | Stanford University |
| Alexandru Nichifor | Senior Lecturer | University of Melbourne |
| Sanket Shah | Graduate Student | Harvard University |
| Zhengyang Bao | Graduate Student | Monash University |
| Allan Hernandez Chanto | Lecturer | University of Queensland |
| Siqi Pan | Lecturer | University of Melbourne |
| Kentaro Tomoeda | Senior Lecturer | University of Technology Sydney |
| Gabriel Tseng | Machine Learning Engineer | Okra Solar |
| Emil Temnyalov | Lecturer | University of Technology Sydney |
| Ashley Khor | Graduate Student | University of Pittsburgh |
| Jaeho Lee | Postdoctoral Researcher | KAIST |
| Xiaoxia Lei | Graduate Student | Shanghai Jiao Tong University |
| Haris Aziz | Associate Professor | UNSW |
| Memunat Ibrahim | Graduate Student | ANU |
| Alexandros Karakostas | Postdoctoral Researcher | University of Queensland |
| Nam Ho-Nguyen | Lecturer | University of Sydney |
| Ivan Balbuzanov | Senior Lecturer | University of Melbourne |


---
layout: post
title: Lovely TG
date: '2005-08-28T20:18:00.000Z'
author: tknv
tags:
modified_time: '2006-11-05T19:53:46.973Z'
blogger_id: tag:blogger.com,1999:blog-11459759.post-112526072201830035
blogger_orig_url: http://phichyudebow.blogspot.com/2005/08/lovely-tg.html
---
Maybe that is domestic TG.
at Sean seab


Currently, the old ADHD diagnosis process takes 6-9 months and thousands of dollars. It is also extremely subjective (depending on the physician) and is prone to misdiagnosis. Our app seeks to solve both of these problems by bringing quanitifiable, real-time data to the diagnostic process.
The initial prototype of reVIVE, built for HTC Vive, won the Grand Prize at TechCrunch Disrupt NY Hackathon 2017, and is currently still in development. We are working with top researchers and professionals to refine our product and do user testing, but reVIVE will be released soon!
Although research has been done in the many health applications of VR, a diagnostic tool like ours has not yet been released on the market.
Virtual Reality technology creates a realistic simulation for patients.
Doctors and physicians can keep updated through our website and messaging service.
Users can view progress over time, with data from sentiment analysis and simulation scores.
While ADHD diagnosis usually takes months and thousands of dollars, reVIVE makes the process easier and faster!


The mobile Group home design started as a responsive redesign of the desktop web's Meetup group experience. The original plan was to first launch on mobile to measure impact, then bring more of the desktop features to mobile web, and finally release a consistent group experience across all platforms. Due to shifting priorities and developer resources, we ended up only having to halt work on newer features. This brought our team to the decision to keep the redesign only on mobile, but build it in a way that would make it easy to finish the bigger feature set that would allow us to launch across all platforms.
This was the first project to use our new and evolving design system via our CSS framework, Sassquatch2. Most of this design system was developed alongside this project. This helped to identify what kinds of patterns and components that other designers might need when building other products.
We weren't expecting any major shifts in our metrics from this launch, but here's what happened:


Dayton posts rally to beat Drake 46-29 behind Chisholm, Cook
by EndPlayDES MOINES, Iowa (AP) - Jake Chisholm ran for three touchdowns, Jack Cook ran for a pair of touchdowns and Dayton beat Drake 46-29 on Saturday.
The Flyers boosted their record to 7-3, 5-2 in the Pioneer Football League and forced a three-way tie for second with the Bulldogs (5-5, 5-2) and Davidson (8-3, 5-2).
Drake took an early two-score lead when Ian Corwin threw an 8-yard touchdown pass to Devin Cates and Drew Lauer ran it in from 13 yards. Chisholm's 9-yard run before the first quarter ended made it 14-7. Lauer added a 9-yard run, and the 2-point conversion made it 22-7.
Dayton responded when Cook ran it in from 4-yards out, and Sam Webster kicked a 23-yard field goal to reduce the margin to 22-17 with 31 seconds before halftime.
The turning point came on the ensuing drive when the Bulldogs took a short kickoff and quickly moved into scoring position. Brandon Easterling picked off Corwin at the goal line and returned it the distance to end the half. The 2-point conversion made it 25-22 and the Flyers led the rest of the way.
Easterling became the 11th Dayton player to intercept three passes in a game.
Corwin threw for 306 yards, two scores and four interceptions.


--- layout: api title: "v2.1.5 JavaScript Library: L.MultiPolygon" categories: api version: v2.1.5 permalink: /api/v2.1.5/l-multipolygon/ ---
Extends FeatureGroup to allow creating multi-polygons (single layer that consists of several polygons that share styling/popup).
| Factory | Description |
|---|---|
L.multiPolygon(
|
Instantiates a multi-polygon object given an array of latlngs arrays (one for each individual polygon) and optionally an options object (the same as for MultiPolyline). |
MultiPolygons accept all Polyline methods but have different behavior around their coordinate contents since they can contain multiple polygon features:
| Method | Returns | Description |
|---|---|---|
setLatLngs(
|
this |
Replace all polygons and their paths with the given array of arrays of geographical points. |
getLatLngs() |
|
Returns an array of arrays of geographical points in each polygon. |
openPopup() |
this |
Opens the popup previously bound by bindPopup. |
toGeoJSON() |
Object |
Returns a GeoJSON representation of the multipolygon (GeoJSON MultiPolygon Feature). |


TL;DR: On exams, your code must use only those instructions and psuedoinstructions listed on the MIPS reference card, in addition to la
for full credit.
To be explicit, altogether this means that only the following psuedoinstructions are allowed:
blt
(Branch Less Than)bgt
(Branch Greater Than)ble
(Branch Less Than or Equal)bge
(Branch Greater Than or Equal)li
(Load Immediate)la
(Load Address)move
(Move)There are a number of instructions and pseudoinstructions located in the MIPS reference card, which is available both at the link and in the front of the course textbook. This set of instructions should be more than sufficient for all the tasks you will be asked to do in this class, and there are no restrictions on which ones you can use, unless otherwise stated.
That said, there are even more instructions, and particularly pseudoinstructions, available.
Scattered documentation exists online which goes through these instructions, though usually in an incomplete manner (for example, this PDF covers the seq
pseudoinstruction, which is not on the aforementioned reference card, but nonetheless exists).
Such pseudoinstructions are nice to have on a day-to-day basis.
However, there are some problems associated with these, particularly from an educational perspective:
For the above reasons, we require that on exams, your code must use only those instructions and psuedoinstructions listed on the MIPS reference card for full credit.
The only exception to this is the la
psuedoinstruction, which may also be used with no restrictions.
While you may use whatever instructions you want for lab assignments, it is still recommended that you stick to the reference card, just to better prepare you for the exams.