scott

Scott Barnes Places Runner-Up In Stars Class

[Written by Stephen Wright] Karting driver Scott Barnes finished runner-up in the Rok class in his maiden Stars Championship Series after another impressive showing overseas. Barnes competed in the final round of the series – Night Fight – at the Trackhouse Motorplex in Mooresville, North Carolina, finishing second in the two heat races on Friday […]




scott

Scott Barnes To Race In Grand Nationals

[Written by Stephen Wright] Karting driver Scott Barnes is set to challenge himself against some of the top L206 class drivers in the United States when he competes in the Cup Karts North American [CKNA] Grand Nationals 8 in New Castle, Indiana, this weekend. Barnes, racing in the Masters and Senior Heavy classes, will make […]




scott

Scott Barnes Proud Of Showing At Cup Karts

Karting driver Scott Barnes expressed pride in his performance after competing against some of the top L206 class drivers in the United States at the Cup Karts North America [CKNA] Grand Nationals 8 at the weekend. Barnes, who raced in the Masters class, made his debut in the prestigious event in New Castle, Indiana. In […]




scott

Scott Barnes Finishes Third In New York

Karting driver Scott Barnes stepped up his preparation for the upcoming Skusa SuperNationals 27 in Las Vegas by claiming a podium finish at a club race in Orange County, New York, yesterday [November 3]. Barnes competed in the Shifter class at the Oakland Valley Race Park in Cuddebackville, finishing third in his race. “I popped […]




scott

Video: ‘Scottie’ The Turtle Travels To Bermuda

A sea turtle found on a Nova Scotia beach in a “hypothermic and semi-comatose” state received care in Canada, and has now been transported to Bermuda to continue her recovery before being returned to the wild. The CBC reported, “An endangered green sea turtle found on a Nova Scotia beach has been revived and shipped […]




scott

Video: Sea Turtle ‘Scotti’ Released Into Wild

After being discovered “disoriented and cold-stunned” in Canada last November, a green sea turtle named ‘Scotti’ has been successfully rehabilitated in Bermuda and released back into the wild. The Bermuda Zoological Society posted the video below on Instagram and said, “A disoriented and cold-stunned green sea turtle found in Canada last November was released back […]




scott

Scott L. Burson: Comparison: FSet vs. Sycamore

[BULLETIN: Quicklisp now has the latest version of FSet.]

Sycamore, primarily by Neil Dantam, is a functional collections library that is built around the same weight-balanced binary tree data structure (with leaf vectors) that FSet uses.  While the README on that page comments briefly on the differences between Sycamore and FSet, I don't feel that it does FSet justice.  Here is my analysis.

Dantam claims that his library is 30% to 50% faster than FSet on common operations.  While I haven't done comprehensive micro-benchmarking, a couple of quick tests indicates that this claim is plausible.  A look through the internals of the implementation confirms that it is clean and tight, and I must commend him.  There may be some techniques in here that I could usefully borrow.

Most of the performance difference is necessitated by two design choices that were made differently in the two libraries.  One of these Dantam mentions in his comparison: FSet's use of a single, global ordering relation implemented as a CLOS generic function, vs. Sycamore's more standard choice of requiring a comparison function to be supplied when a collection is created.  The other one he doesn't mention: the fact that FSet supports a notion of equivalent-but-unequal values, which are values that are incomparable — there's no way, or at least no obvious way, to say which is less than the other, and yet we want to treat them as unequal.  The simplest example is the integer 1 and the single-float 1.0, which have equal numerical values (and cl:= returns true on them), but which are nonetheless not eql.  (I have a previous blog post that goes into a lot more detail about equality and comparison.)  Since Sycamore expects the user-supplied comparison function to return an integer that is negative, zero, or positive to indicate the ordering of its arguments, there's no encoding for the equivalent-but-unequal case, nor is there any of the code that would be required to handle that case.

Both of these decisions were driven by my goal for the FSet project.  I didn't just want to provide a functional collections library that could be called occasionally when one had a specific need for such a data structure.  My ambition was much grander: to make functional collections into a reasonable default choice for the vast majority of programming situations.  I wanted FSet users (including, of course, myself) to be able to use functional collections freely, with very little extra effort or thought.  While Lisp by itself reaches a little bit in this direction — lists can certainly be used functionally — lists used as functional collections run into severe time complexity problems as those collections get large.  I wanted the FSet collections to be as convenient and well-supported as lists, but without the time complexity issues.

— Or rather, I wanted them to be even more convenient than lists.  Before writing FSet, I had spent years working in a little-known proprietary language called Refine, which happened to be implemented on top of Common Lisp, so it was not unusual to switch between the two languages.  And I had noticed something.  In contrast to CL, with its several different predefined equality predicates and with its functions that take :test arguments to specify which one to use, Refine has a single notiion of equality.  The value space is cleanly divided between immutable types, which are compared by value — along with numbers, these include strings, sets, maps, and seqs — and mutable objects, which are always compared by identity.  And it worked!  I found I did not miss the ability to specify an equality predicate when performing an operation such as "union".  It was just never needed.  Get equality right at the language level, and the problem goes away.

Although FSet's compare generic function isn't just for equality — it also defines an ordering that is used by the binary trees — I thought it would probably turn out to be the case that a single global ordering, implemented as a generic function and therefore extensible, would be fine the vast majority of the time.  I think experience has borne this out.  And just as you can mix types in Lisp lists — say, numbers and symbols — without further thought, so you can have any combination of types in an FSet set, effortlessly.  (A project I'm currently working on actually takes considerable advantage of this capability.)

As for supporting equivalent-but-unequal values, this desideratum flows directly from the principle of least astonishment.  While it might not be too surprising for a set or map implementation to fail distinguish the integer 1 from the float 1.0, it certainly would be very surprising, and almost certainly a source of bugs in a compiler that used it, for it to fail to distinguish two uninterned symbols with the same name.  (I saw a macro expansion recently that contained two distinct symbols that both printed as #:NEW.  It happens.)  A compiler using Sycamore for a map on symbols would have to supply a comparison function that accounted for this; it couldn't just compare the package name and symbol name.  (You'd have to do something like keep a weak hash table mapping symbols to integers, assigned in the order in which the comparison function encountered them.  It's doable, but FSet protects you from this madness.)

Along with those deep semantic design choices, I've spent a lot of time on developing a wide and featureful API for FSet (an effort that's ongoing).  FSet has many features that Sycamore lacks, including:

  • seqs, a binary-tree sequence implementation that holds arbitrary Lisp objects (Sycamore ropes hold only characters, which is certainly an important special case, but why restrict ourselves?)
  • default values for maps and seqs (the value to return when the key is outside the domain is associated with the collection, not supplied at the call site; this turns out to be a significant convenience)
  • generic functions that operate on both lists and FSet collections, to shadow the CL builtins
  • the powerful map-union and map-intersection operations (I'll blog about these in the future)
  • more ways to iterate over the collections (the FSet tutorial has a good summary, about 3/4 of the way down)
  • speaking of the tutorial, FSet has lots more documentation

Let me digress slightly to give an example of how FSet makes programming more elegant and convenient.  Joe Marshall just put up a blog post comparing Go(lang) with Common Lisp, which is worth a read on its own; I'm just going to grab a code snippet from there to show a little bit of what programming with FSet is like.  Here's Joe's code:

 (defun collate (items &key (key #'identity) (test #'eql) (merger (merge-adjoin #'eql)) (default nil))
   (let ((table (make-hash-table :test test)))
     (dolist (item items table)
       (let ((k (funcall key item)))
         (setf (gethash k table) (funcall merger (gethash k table default) item))))))

 (defun merge-adjoin (test)
   (lambda (collection item)
     (adjoin item collection :test test)))

And here's what I would write using FSet:

 (defun collate (items &key (key #'identity))
   (let ((result (map :default (set))))
     (dolist (item items result)
       (includef (@ result (funcall key item)) item))))

(Well, I would probably move result outside the dolist form to make it clearer what the return value is, but let's go with Joe's stylistic choice here.)

For those who haven't used FSet: the form (map :default (set)) creates a map whose default is the empty set, meaning that lookups on that map will return the empty set if the key is not in the map.  This saves the includef form from having to handle that possibility.

My version makes assumptions, it's true, about how you want to collect the items with a given key; it doesn't give you other choices.  It could, but what would be the point?  It's already using a general set with better time complexity than lists, and saving you from having to write anything like merge-adjoin.  The extensible global equivalence relation means you're not going to need to supply a :test either.

I think the FSet-enhanced code is cleaner, more elegant, and therefore clearer than the plain-CL version.  Don't you agree?  Maybe you wouldn't say it's a huge improvement, okay, but it's a small example; in a larger codebase, I would argue, these small improvements add up.

* * * * *

To summarize: if you just want a library you can call in a few places for specific purposes, Sycamore might work better for you (but think hard if you're writing a comparator for symbols).  FSet can certainly be used that way, but it can be much more.  If you want to see one way in which Common Lisp can be made into a better language, without giving up anything that we love about it, I urge you to give FSet a try.

FSet has changed the way I write Lisp programs.  — an FSet user

(UPDATE: the magnitude of the performance difference between FSet and Sycamore surprised me, and inspired me to do some profiling of FSet.  It turned out that I could get a 20% speedup on one micro-benchmark simply by adding some inline declarations.  Mea culpa, mea culpa, mea maxima culpa; I should have done this years ago.   With that change, the generic function overhead appears to be the only significant cause of the remaining ~20% performance difference.  I tried creating a Sycamore set using a thin wrapper around fset:compare, and the resulting performance was very similar to that of FSet with its new inlines.)




scott

Chipotle’s new CEO Scott Boatwright will make millions leading the chain—but only half as much as ex-CEO Brian Niccol

Chipotle’s new chief executive is Scott Boatwright, a familiar face and name, given that he’s served as the interim CEO since August following former CEO Brian Niccol’s surprise decision to lead a turnaround at Starbucks. And while Boatwright, 52, will get a significant pay boost in his new…




scott

Old age doesn’t come alone a case study on the impact of the ageing population on a Scottish local authority’s care at home service.

This research was undertaken by Stuart Fordyce as part of an MSc in Integrated Service Improvement (Health and Social Care) at the University of Edinburgh. It considers the impact of a rapidly ageing population on a Scottish local authority and its attempt to shift the focus to a more contemporary service provision. The aim is to explore what factors are inhibiting the effectiveness of enablement. Using a case study approach the research explored whether: (i) enablement is wholly effective in addressing the increase in current service demands; (ii) the approach adopted by the local authority is undermined as services are now over extended and are attempting to address competing objectives, and; (iii) the paradigmatic change across the sector in the future will materialise if organisations cannot create the capacity and infrastructure to enable change to occur




scott

Scottish Centre for Crime and Justice Research (SCCJR)

The core purpose of the Scottish Centre for Crime and Justice Research (SCCJR) is to carry out high quality, internationally recognised research in relation to crime and criminal justice.




scott

Scottish Consortium for Learning Disabilities (SCLD)

SCLD brings together some of the most respected practitioners and thinkers from across the learning disability sector who work alongside people who have learning disabilities and their families and carers.The team at SCLD is focused on delivering real change through influencing policy, identifying and sharing evidence and good practice and challenging public attitudes. SCLD aims to be a knowledge hub – offering support, information and new ideas about learning disability in Scotland.




scott

Scottish Council for Voluntary Organisations (SCVO)

The Scottish Council for Voluntary Organisations (SCVO) is the membership organisation for Scotland's charities, voluntary organisations and social enterprises.





scott

Bike Check: Dangerholm's Scott Spark RC Visione



Another next-level build from Mr. Dangerholm.
( Photos: 31, Comments: 126 )




scott

How this epic Scottish Highlands road trip is taking action against irresponsible tourists

Vistors to the North Coast 500 are being asked to sign a pledge amin concerns of speeding drivers




scott

Scottish Football Podcast

We discuss the Scotland men’s squad, promoting young talent and Celtic v Chelsea.




scott

Scottish club deducted six points for sloping pitch

Scottish League 2 club Bonnyrigg Rose are deducted six points - because of the slope on their New Dundas Park pitch.




scott

East Kilbride shock Ayr in Scottish Challenge Cup

East Kilbride stun Ayr United to reach the semi-finals of the SPFL Trust Trophy as Dunfermline Athletic and Livingston progress.




scott

velocityconf: RT @courtneynash: Bill Scott's #fluentconf keynote theme also rings true re #velocityconf: tech change is really about people/culture change

velocityconf: RT @courtneynash: Bill Scott's #fluentconf keynote theme also rings true re #velocityconf: tech change is really about people/culture change





scott

Dallas Cowboys quarterback Dak Prescott to have season-ending hamstring surgery

Veteran quarterback Dak Prescott will undergo season-ending surgery to repair his injured hamstring, Dallas Cowboys owner Jerry Jones announced Tuesday.




scott

Hazel Scott, Jazz and Classical Pianist, Performs Liszt

Read more at http://www.smithsonianmag.com/arts-culture/Hazel-Scotts-Lifetime-of-High-Notes.html In a performance filmed for World War II soldiers, Hazel Scott begins with a section from Liszt's "Hungarian Rhapsody No. 2" and ends with a jazzy tune (Army / Navy Screen Magazine).




scott

Saskatchewan Huskies head coach Scott Flory after losing a defensive battle to provincial rival

It was only the second time the Saskatchewan Huskies and the Regina Rams have met in the Hardy Cup championship game. This time it was the Rams coming out on top 19-14. Huskies head coach Scott Flory says there were too many turnovers and too many plays left on the field after a hard fought game.




scott

January 2 Energy Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 23 Energy Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 29 Energy Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

Kamloops, B.C., to host 2023 Scotties Tournament of Hearts

Kamloops, B.C., has been selected as the host city of the 2023 Scotties Tournament of Hearts.



  • Sports/Olympics/Winter Sports/Curling

scott

Laura Walker makes game-winning draw to win Alberta playdown, book Scotties ticket

Laura Walker made a game-winning draw Sunday afternoon to win the Alberta women's curling playdowns and secure a berth in the upcoming national championship.



  • Sports/Olympics/Winter Sports/Curling

scott

Wild-card debate ramps up ahead of Scotties Tournament of Hearts

The oft-discussed wild-card setup at the national championships took centre stage again Monday with the release of updated rankings that appeared to determine the play-in game matchup at the Scotties Tournament of Hearts.



  • Sports/Olympics/Winter Sports/Curling

scott

Homan selection for Beijing gives Team Hollie Duncan the Ontario berth at Scotties

Rachel Homan and John Morris weren't the only ones celebrating after their selection to wear the Maple Leaf in mixed doubles curling competition at the Beijing Olympics. The nomination also cleared the path for Team Hollie Duncan to represent Ontario at the national championship.



  • Sports/Olympics/Winter Sports/Curling

scott

Scotties Tournament of Hearts women's curling good to go in Thunder Bay, Ont., maybe even with fans

Curling Canada says the Scotties Tournament of Hearts in Thunder Bay, Ont., will operate under Ontario's current public health measures and an approved framework from the office of the chief medical officer.



  • News/Canada/Thunder Bay

scott

January 4 Livestock Commentary: Scott Shellady

Scott Shellady, TJM Investments




scott

April 30 Livestock Commentary: Scott Shellady

Scott Shellady, TJM Investments




scott

May 07 Livestock Commentary: Scott Shellady

Scott Shellady, TJM Investments




scott

May 09 Livestock Commentary: Scott Shellady

Scott Shellady, TJM Investments




scott

December 13 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

December 18 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

December 20 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 2 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 3 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 10 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 15 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 23 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 24 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 29 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

January 31 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

February 5 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

February 7 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

February 19 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy




scott

February 21 Equities Commentary: Scott Bauer

Scott Bauer, Prosper Trading Academy