ac Elon Musk’s job as Trump’s bureaucracy buster could be just the start - The Australian Financial Review By news.google.com Published On :: Wed, 13 Nov 2024 03:47:00 GMT Elon Musk’s job as Trump’s bureaucracy buster could be just the start The Australian Financial ReviewElon Musk tapped for ‘government efficiency’ role by Donald Trump Sydney Morning HeraldEvening News Bulletin 13 November 2024 SBS NewsDonald Trump wants Elon Musk to slash regulations as he reveals his role ABC News Full Article
ac Biblical and Budai Taiwanese: vernacular, literary; oral, written By languagelog.ldc.upenn.edu Published On :: Sun, 10 Nov 2024 12:21:52 +0000 [This is a guest post by Denis Mair] Cai Xutie was a Taiwanese woman who ran a family farm with her husband in a village near Jiayi in central Taiwan. She was a rice farmer and had never attended a public school. After her husband died in middle age, she sold some of the land, […] Full Article Language and entertainment Language and religion Literacy Topolects
ac NOTOCON Speaker Deadline Approaching By oto-usa.org Published On :: Sat, 22 Apr 2023 19:01:09 +0000 The deadline to propose a presentation for National O.T.O. Conference XIV in Denver, CO, is May 10, 2023. Full Article NOTOCON
ac New content on radar.spacebar.org By radar.spacebar.org Published On :: Thu, 30 Nov 2023 23:27:19 -0500 Here is the new content: I've mentioned that I have been working on running a five-minute mile on the treadmill this year, a goal that at one point seemed in reach. I think I also complained that I got sick and that when I got back to it, they had swapped out all the treadmills for fancy treadmills with built-in Netflix and air conditioning and stuff like that, which I now refer to as "Bob's Tred Mill." There's some good things about these, and some things that make me crazy, but one thing that especially made me crazy is they felt significantly faster than the old Precor ones I was used to. It's definitely a real thing that treadmills are sometimes not calibrated correctly (or the tread stretches out or slips, etc.) but it was also possible that being sick set me back more than I thought. The important thing is to get The Data instead of just The Upset Feelings so I was shopping for things like those hand-held unicycles that you can wheel around to measure how long things (like streets) are, as it does seem like the kind of device that I would own, looking at like the world's most accurate hand-held unicycle thing, and then I noticed at the last thing that most of them have a MAX SPEED of something like 10mph, which would not do. I finally had the brain-stroke that I could use a laser tachometer to do it, since these have a max speed more like 99999 RPM. So I measured the tread length with some chalk marks and put reflective tape on there. The treadmill will go at different speeds when loaded (running on it) vs unloaded, which also depends on your weight and stride and stuff a little, so you also gotta engage in the dexterity-testing act of measuring while running on it, which looked like this: POV: You are me Pointing the laser at the reflective tape dot (visible right next to the laser dot here) as it flies by while running kinda fast is definitely tricky, although I must say that it was one of those times when I thought, "I've been training my whole life for this!" and you can see that I'm showing off a little bit here by also photographing it at the same time. But you are not impressed since it reports 0 RPM. The nice thing about the tachometer is that it only needs a pair of observations to give you a frequency, and you can easily tell if you missed the tape, which you do often on account of the shaking, because you get some integer multiple that's way off from the right answer. Anyway I dutifully took multiple readings unloaded and loaded at (nominally) 6mph, 7mph, ... 12mph and made a spreadsheet with all the results converted, and... found that the treadmill is just about 1% too fast loaded, all across the board. This would be just 3 seconds for a five-minute mile, which is not nothing, but it definitely does not vindicate my Upset Feelings (I was thinking it felt more like 10%). My best guess is that the old treadmills were (all?) actually too slow, which is annoying because now I doubt some of the unofficial 5k records I painfully set for myself during the summer. But, well, the thing about endeavoring to do challenging things is: No Cheating! In project news, I feel I have a foothold now to get myself out of this math hole, as I've finally migrated this algorithm to work only with 64-bit integer arithmetic and so I can port it to GPU soon and then be out of ideas about how to make it faster. I have no idea if there's a good story to be told for this project, but I'll try (and also, it is okay if sometimes the hobby programming doesn't lead to a video or Sigbovik paper, you know?). And speaking of Sigbovik: Heroes have emerged quite on time this year, so it's certainly looking like there will be a proceedings and conference (perhaps with livestream), so start writing those papers now. Aside from the math hole, I've been making some progress on two other concurrent projects. It's getting normal again (even quiet) at work and winter break is coming up, and I'm looking forward to having some several-day stretches to work on them. I played through Golf Peaks (well, I haven't beat all the bonus levels yet but I've been working back to front so it's just a matter of a little time at this point), which was a very nice little puzzle game that does almost everything right. Other than the very irritating music in one world, I think my only disappointment was that it doesn't elegantly handle infinite-length puts. I'm also still working on Return to Monkey Island, which I do like, although it doesn't hold up to my memory of the first two. I think one of the problems with modern point-and-click adventure games is the voices, actually: Not because the voice acting bothers me, but because it goes so slow compared to reading. It's like when you just want to figure out the maximum speed of the hand-held unicycle and they're trying to get you to watch a video instead of just reading. Tears of the Kingdom (which I'm still savoring, but getting close to the end now) does a good job with this; you do hear snippets of voices, which helps with the characterization, but you can blow through the dialog at a pretty fast pace. Probably a lot cheaper, too! Full Article
ac This halloween I am dressed as a withered husk, who was made this way by: Satisfactory 1.0 By radar.spacebar.org Published On :: Thu, 31 Oct 2024 22:35:04 -0400 OMG. I can't believe October is over already. I blame Satisfactory which, okay, I do get it now, and it did destroy my body and mind. I am inches from being done now; I just want to make sure that I finish it with enough force that I do actually put it away, as I could imagine tinkering with my saddest factory forever. The game isn't without flaw, but I think most of those flaws are not interesting to talk about. I do have one petty but important criticism, which is mildly spoilerful and anyway will only be interesting if you played the game. There is an object called the Somersloop ("cool S") which allows you to double the output of a machine. Canonically this item is some kind of "loop" and the flavor text talks about how it is able to create more energy than you put into it. So when I'm out hunting for Korok seeds I have this thought that maybe I could create a loop of factories whereby it would create infinite resources by repeatedly doubling. And I'm thinking about it but the crafting tree doesn't have any notable loops in it, but I remember the "packager" which allows you to put a fluid in a container or the converse, and I'm like: Yes, that's great! So I get back to base and I am doing this, just for fun to create an infinite fuel factory or whatever, and I realize that the packager just doesn't have a slot for a Somersloop. They must just hate fun, elegant twists. It would not break the game to allow this (you can always get infinite resources lots of other ways) or cause any other problem I can think of. Hmph! The thing about constructing a factory and watching it churn is that it's basically the same thing as a programming project that you invented for yourself, and it's probably better to do the programming project. Here's progress on my mysterious rectangle: Minusweeper 2 It's good progress if I do say so myself! Anything but black here is a Satisfactory result, which is 90.55% of them at this point. I may need heavy machinery for the remaining 9.45%, but that is part of the fun. I think that's really it for this month! Please vote in the US Elections if you can (but I guess also vote in any important elections. And obviously, vote for the good guys???). And happy Halloween! Full Article
ac Back to the Ranch By magistratesblog.blogspot.com Published On :: Thu, 13 Apr 2017 22:54:00 +0000 In the six months since my retirement from the bench I have not had cause to visit the courthouse. This week, however, I volunteered to show some local people around the building, and I was agreeably surprised to find that I still remembered the pass code for the car park. Our visitors were very interested and full of questions, which reminded me of my very early days as a JP when I found out just how little people knew about the court and its workings. That was a prime reason for my starting a blog a decade ago. Full Article
ac Bobsleighers want tracks covered By www.bbc.co.uk Published On :: Sat, 21 Jan 2012 09:08:15 GMT Great Britain's bobsleigh team call for all sliding tracks to be covered after heavy snowfall at the Winter Youth Olympics in Austria. Full Article Winter Sports
ac Yarnold acclaims adaptable Brits By www.bbc.co.uk Published On :: Thu, 01 Mar 2012 11:24:28 GMT Sevenoaks slider Lizzy Yarnold says the fact Britain has no real purpose built tracks is the main reason behind British success in the sport Full Article Winter Sports
ac Austin Ironman 70.3! (Race Weekend!) By greglsblog.blogspot.com Published On :: Thu, 22 Mar 2018 21:06:00 +0000 Okay, it's been a while, but I thought I'd finally post about the 2017 Austin Ironman 70.3 race weekend. :-). Like I mentioned in my last post, I felt fairly optimistic -- if anything I was a bit burned out on training. The big kicker, though, was that the weather was forecast to be 38 degrees race morning, which resulted in a bit of last-minute anxiety, mostly due to the mantra, "Don't do anything different on race day." That is, it is unwise in the extreme to test out new equipment or clothing on race day. Unfortunately, faced with the prospect of a 38 degree swim and bike ride (and the fact that it would warm up quickly), we had to make some last minute adjustments. The week before the race, I picked up a triathlon jersey that had sleeves, and borrowed some arm warmers from one of my training partners. Saturday morning, I went for a five mile test ride and realized I needed gloves, which necessitated a trip to Austin Tri-Cyclist, where I was not the only one making such a purchase :-). I was still a bit concerned about the swim, but I had a wetsuit, so I figured I'd done all I could do. Still, I was coveting one with sleeves... I next headed over to the Travis County Expo Center to pick up my swag bag, drop off my bicycle and gear, and check out the transition areas. Our happy faces before we get out of the car into the cold... Next morning, three of us drove out together and arrived in the cold dark of the Travis County Expo. Center at around 5:30. Did I mention that it was cold? Eventually, we got on the bus to take us to the staging area at Walter Long (Decker) Lake. There, we put on wetsuits, met up with our other training partners, and shivered a lot. Eventually, though, as the sun started to peak above the horizon, we lined up according to our projected swim times and prepared for the start of the race. I was still worried about the swim and the cold -- even though I was wearing socks (to be discarded just before start), my feet were starting to go numb and my arms were not happy either. But then it was time! I ran into the water and dived in as soon as I could. To my surprise, it was actually pleasant -- the water itself was around 68-72 degrees, so compared to the air temperature, it was balmy. The only real problem was that fog on the water and the glare of the sun were making it hard to see the buoys. About halfway through the swim I began thinking that the temperature really wasn't bad -- if anything, it was a bit too warm. Emerging from the water... But then I finished the swim and stood and was confronted by the reality of confronting an air temp of around 40 while being soaking wet. I grabbed my glasses from the special needs table and a nice man helped me get the wetsuit off. (This basically involved lying back on the wet ground, sticking my feet in the air and having him pull. Thank you, sir.). My time was a little slower than I would've liked, but I was fairly happy with it. I made it to transition, took a big swig of water, swallowed the contents of an energy gel pack, and put on my winter cycling garb. Then I was off! And it was frickin' cold. Contemplating that wind chill... It was this weird Catch-22 where you want to go as fast as possible (for the race, of course, but also so you warm up), but also kind of are thinking that if you slowed down a touch the wind chill wouldn't be quite so bad. I ended up spending the next hour shivering until the ambient temperature and I warmed up. Now, I actually kind of like the bike route -- it's mostly country roads with little traffic, and I rode the route about a half-dozen times in training. The problem with it is that a number of the roads are not exactly well=paved. Bumps and potholes and patches proliferate, especially on Monkey Road. In fact, the dip where it crosses a creek is so bumpy that by the time I got there, there were at least a dozen water bottle scattered on the ground. There were way too many hills, however :-). Beyond that, the ride felt fine, although my back began to hurt about halfway through -- I wasn't used to spending that much time in the aero position, so most of the second half of my ride was with hands on the brake hoods. I made sure to stick with my hydration and nutrition plan, so I felt pretty good by the end of it. Again, my time wasn't quite what I wanted it to be, but I was not displeased. By the time I finished the ride, it was around noon and fairly warm, so I took the time to change from my sleeved singlet to a sleeveless one (Ironman rules require that you wear a shirt). Starting to feel the legs... The run wasn't as bad as I thought it would be, although there were again too many hills :-). I was pleased at the number and size of the aid stations -- water, electrolyte drink (Gatorade, iirc), Clif energy gels, Coca-Cola, and Red Bull were all available. I was definitely feeling my legs, but my quads didn't feel like they were going to seize up like they had when I did triathlons in the 90s -- all that training paid off, I guess :-). I managed to make it through without slowing to a walk (other than at aid stations, because I can't drink and run at the same time) and ended up with a run time that was comparable to my stand-alone half-marathon times. At the finish line! My final time was 5:50:36, which I'm pretty happy about. My goal had been 6:00:00, although I did think that 5:45:00 was not out of the question. :-). Finisher photo! And medal! The gang... All in all, it was a great experience. I got out of my comfort zone, made some terrific friends, learned how to most efficiently change a bike tube, and never once thought, "I can't believe I'm paying to do this." (Okay, maybe once...). After the race! Celebrating the next day with Coach Peri! Full Article 70.3 Ironman races triathlon
ac Why NASA does space science and not the private sector By www.planetary.org Published On :: Tue, 13 Aug 2024 08:00:00 -0700 With all the advances in private space exploration, why do taxpayers still pay for space science missions? Full Article
ac Ramses: A new mission racing to land on asteroid Apophis By www.planetary.org Published On :: Thu, 22 Aug 2024 07:00:00 -0700 When a skyscraper-sized asteroid narrowly misses Earth in 2029, three spacecraft may be along for the ride. Full Article
ac The Tianlin Space Telescope By www.planetary.org Published On :: Thu, 05 Sep 2024 07:00:00 -0700 China is in the early stages of planning a huge space observatory to help answer the matter of whether we are alone in the galaxy. Full Article
ac Inside, underneath, backward, upside-down By www.planetary.org Published On :: Fri, 06 Sep 2024 07:30:00 -0700 From holes on Mars to a spun-around moon and a flipped reflection, space science involves looking at things from all different angles. Full Article
ac Extraterrestrial artifacts By www.planetary.org Published On :: Mon, 09 Sep 2024 06:56:00 -0700 Could the Solar System host traces of other intelligent life? Full Article
ac Your impact: September equinox 2024 By www.planetary.org Published On :: Mon, 09 Sep 2024 06:56:00 -0700 Exploring Europa and defending Earth. Full Article
ac Spacecraft, what do your robot eyes see? By www.planetary.org Published On :: Fri, 20 Sep 2024 07:30:00 -0700 Cameras on spacecraft are our eyes into the Cosmos. Sometimes they teach us things, sometimes they reveal gaps in our knowledge. Full Article
ac Europa Clipper: A mission backed by advocates By www.planetary.org Published On :: Tue, 01 Oct 2024 07:00:00 -0700 Europa Clipper will soon head for Jupiter's icy, potentially habitable moon. Without the advocacy efforts of The Planetary Society and our members, the mission may never have been possible. Full Article
ac Space in the 2024 elections By www.planetary.org Published On :: Tue, 22 Oct 2024 07:00:00 -0700 An overview of what U.S. space policy might look like under a Trump or a Harris administration. Full Article
ac 2026 Cadillac Vistiq Electric SUV By uncrate.com Published On :: Tue, 12 Nov 2024 14:00:00 -0500 Full Article SUVs & Trucks
ac Vollebak Eiderdown Puffer Jacket By uncrate.com Published On :: Tue, 12 Nov 2024 14:20:58 -0500 Full Article Outerwear
ac Actually magical. By maryannemohanraj.com Published On :: Sun, 10 Nov 2024 17:32:00 +0000 Milkweed fluff and magic gold mica — love how these bookends came out. They actually are magical. ????. In the shop! Full Article Berwyn Shops Serendib House
ac Halfords Mat Lacquer By iron-mitten.blogspot.com Published On :: Fri, 08 Nov 2024 16:29:00 +0000 I thought I'd give this a go as I had heard good things about it. I thought the scenic rock pools would be the perfect test subject, as if they dried glossy it wouldn't matter.The results were good. I sprayed the models after I had added some flock, I thought the lacquer would help seal it.After the scenic pieces I thought I'd try it on the new Irish figures. I consider this a tough, hard coat. Another layer of super mat varnish will be added with a brush when this first coat is dry.The rock pools got a layer of flock really nail the realistic look. The flock and paint work is all sprayed with the new lacquer, seems to be a winner. Full Article Hobby Window Hobby Window.
ac Patrick Stein: Ray Tracing In One Weekend (in Lisp, and n-dimenions) By nklein.com Published On :: Fri, 27 Sep 2024 02:37:31 GMT Earlier this year, I started working through the online book Ray Tracing In One Weekend (Book 1). I have been following along with it in Common Lisp, and I have been extending it all from 3-dimensional to n-dimensional. I reproduced 4-dimensional versions of all of the book images which you can see on my weekend-raytracer github page. Here is the final image. This is a 250-samples-per-pixel, 640x360x10 image plane of three large hyperspheres (one mirrored, one diffuse, one glass) atop a very large, diffuse hypersphere. Also atop this very large hypersphere are a bunch of smaller hyperspheres of varying colors and materials. The image is rendered with some defocus-blur. Final image of 4-dimensional scene Caveat: This depends on a patched version of the policy-cond library that is not in the current Quicklisp distribution but should be in the next. Full Article
ac TurtleWare: Dynamic Vars - The Empire Strikes Back By turtleware.eu Published On :: Mon, 28 Oct 2024 00:00:00 GMT Table of Contents Thread Local storage exhausted The layer of indirection I can fix her Let's write some tests! Summary Thread Local storage exhausted In the last post I've described a technique to use dynamic variables by value instead of the name by utilizing the operator PROGV. Apparently it works fine on all Common Lisp implementations I've tried except from SBCL, where the number of thread local variables is by default limited to something below 4000. To add salt to the injury, these variables are not garbage collected. Try the following code to crash into LDB: (defun foo () (loop for i from 0 below 4096 do (when (zerop (mod i 100)) (print i)) (progv (list (gensym)) (list 42) (values)))) (foo) This renders our new technique not very practical given SBCL popularity. We need to either abandon the idea or come up with a workaround. The layer of indirection Luckily for us we've already introduced a layer of indirection. Operators to access dynamic variables are called DLET, DSET and DREF. This means, that it is enough to provide a kludge implementation for SBCL with minimal changes to the remaining code. The old code works the same as previously except that instead of SYMBOL-VALUE we use the accessor DYNAMIC-VARIABLE-VALUE, and the old call to PROGV is now DYNAMIC-VARIABLE-PROGV. Moreover DYNAMIC-EFFECTIVE-SLOT used functions BOUNDP and MAKUNBOUND, so we replace these with DYNAMIC-VARIABLE-BOUND-P and DYNAMIC-VARIABLE-MAKUNBOUND. To abstract away things further we also introduce the constructor MAKE-DYNAMIC-VARIABLE (defpackage "EU.TURTLEWARE.BLOG/DLET" (:local-nicknames ("MOP" #+closer-mop "C2MOP" #+(and (not closer-mop) ecl) "MOP" #+(and (not closer-mop) ccl) "CCL" #+(and (not closer-mop) sbcl) "SB-MOP")) (:use "CL")) (in-package "EU.TURTLEWARE.BLOG/DLET") (eval-when (:compile-toplevel :execute :load-toplevel) (unless (member :bordeaux-threads *features*) (error "Please load BORDEAUX-THREADS.")) (when (member :sbcl *features*) (unless (member :fake-progv-kludge *features*) (format t "~&;; Using FAKE-PROGV-KLUDGE for SBCL.~%") (push :fake-progv-kludge *features*)))) (defmacro dlet (bindings &body body) (flet ((pred (binding) (and (listp binding) (= 2 (length binding))))) (unless (every #'pred bindings) (error "DLET: bindings must be lists of two values.~%~ Invalid bindings:~%~{ ~s~%~}" (remove-if #'pred bindings)))) (loop for (var val) in bindings collect var into vars collect val into vals finally (return `(dynamic-variable-progv (list ,@vars) (list ,@vals) ,@body)))) (defmacro dset (&rest pairs) `(setf ,@(loop for (var val) on pairs by #'cddr collect `(dref ,var) collect val))) (defmacro dref (variable) `(dynamic-variable-value ,variable)) ;;; ... (defmethod mop:slot-boundp-using-class ((class standard-class) object (slotd dynamic-effective-slot)) (dynamic-variable-bound-p (slot-dvar object slotd))) (defmethod mop:slot-makunbound-using-class ((class standard-class) object (slotd dynamic-effective-slot)) (dynamic-variable-makunbound (slot-dvar object slotd))) With these in place we can change the portable implementation to conform. #-fake-progv-kludge (progn (defun make-dynamic-variable () (gensym)) (defun dynamic-variable-value (variable) (symbol-value variable)) (defun (setf dynamic-variable-value) (value variable) (setf (symbol-value variable) value)) (defun dynamic-variable-bound-p (variable) (boundp variable)) (defun dynamic-variable-makunbound (variable) (makunbound variable)) (defmacro dynamic-variable-progv (vars vals &body body) `(progv ,vars ,vals ,@body))) I can fix her The implementation for SBCL will mediate access to the dynamic variable value with a synchronized hash table with weak keys. The current process is the key of the hash table and the list of bindings is the value of the hash table. For compatibility between implementations the top level value of the symbol will be shared. The variable +FAKE-UNBOUND+ is the marker that signifies, that the variable has no value. When the list of bindings is EQ to +CELL-UNBOUND+, then it means that we should use the global value. We add new bindings by pushing to it. #+fake-progv-kludge (progn (defvar +fake-unbound+ 'unbound) (defvar +cell-unbound+ '(no-binding)) (defclass dynamic-variable () ((tls-table :initform (make-hash-table :synchronized t :weakness :key) :reader dynamic-variable-tls-table) (top-value :initform +fake-unbound+ :accessor dynamic-variable-top-value))) (defun make-dynamic-variable () (make-instance 'dynamic-variable)) (defun dynamic-variable-bindings (dvar) (let ((process (bt:current-thread)) (tls-table (dynamic-variable-tls-table dvar))) (gethash process tls-table +cell-unbound+))) (defun (setf dynamic-variable-bindings) (value dvar) (let ((process (bt:current-thread)) (tls-table (dynamic-variable-tls-table dvar))) (setf (gethash process tls-table +cell-unbound+) value)))) We define two readers for the variable value - one that simply reads the value, and the other that signals an error if the variable is unbound. Writer for its value either replaces the current binding, or if the value cell is unbound, then we modify the top-level symbol value. We use the value +FAKE-UNBOUND+ to check whether the variable is bound and to make it unbound. #+fake-progv-kludge (progn (defun %dynamic-variable-value (dvar) (let ((tls-binds (dynamic-variable-bindings dvar))) (if (eq tls-binds +cell-unbound+) (dynamic-variable-top-value dvar) (car tls-binds)))) (defun dynamic-variable-value (dvar) (let ((tls-value (%dynamic-variable-value dvar))) (when (eq tls-value +fake-unbound+) (error 'unbound-variable :name "(unnamed)")) tls-value)) (defun (setf dynamic-variable-value) (value dvar) (let ((tls-binds (dynamic-variable-bindings dvar))) (if (eq tls-binds +cell-unbound+) (setf (dynamic-variable-top-value dvar) value) (setf (car tls-binds) value)))) (defun dynamic-variable-bound-p (dvar) (not (eq +fake-unbound+ (%dynamic-variable-value dvar)))) (defun dynamic-variable-makunbound (dvar) (setf (dynamic-variable-value dvar) +fake-unbound+))) Finally we define the operator to dynamically bind variables that behaves similar to PROGV. Note that we PUSH and POP from the thread-local hash table DYNAMIC-VARIABLE-BINDINGS, so no synchronization is necessary. #+fake-progv-kludge (defmacro dynamic-variable-progv (vars vals &body body) (let ((svars (gensym)) (svals (gensym)) (var (gensym)) (val (gensym))) `(let ((,svars ,vars)) (loop for ,svals = ,vals then (rest ,svals) for ,var in ,svars for ,val = (if ,svals (car ,svals) +fake-unbound+) do (push ,val (dynamic-variable-bindings ,var))) (unwind-protect (progn ,@body) (loop for ,var in ,svars do (pop (dynamic-variable-bindings ,var))))))) Let's write some tests! But of course, we are going to also write a test framework. It's short, I promise. As a bonus point the API is compatibile with fiveam, so it is possible to drop tests as is in the appropriate test suite. (defvar *all-tests* '()) (defun run-tests () (dolist (test (reverse *all-tests*)) (format *debug-io* "Test ~a... " test) (handler-case (funcall test) (serious-condition (c) (format *debug-io* "Failed: ~a~%" c)) (:no-error (&rest args) (declare (ignore args)) (format *debug-io* "Passed.~%"))))) (defmacro test (name &body body) `(progn (pushnew ',name *all-tests*) (defun ,name () ,@body))) (defmacro is (form) `(assert ,form)) (defmacro pass ()) (defmacro signals (condition form) `(is (block nil (handler-case ,form (,condition () (return t))) nil))) (defmacro finishes (form) `(is (handler-case ,form (serious-condition (c) (declare (ignore c)) nil) (:no-error (&rest args) (declare (ignore args)) t)))) Now let's get to tests. First we'll test our metaclass: (defclass dynamic-let.test-class () ((slot1 :initarg :slot1 :dynamic nil :accessor slot1) (slot2 :initarg :slot2 :dynamic t :accessor slot2) (slot3 :initarg :slot3 :accessor slot3)) (:metaclass class-with-dynamic-slots)) (defparameter *dynamic-let.test-instance-1* (make-instance 'dynamic-let.test-class :slot1 :a :slot2 :b :slot3 :c)) (defparameter *dynamic-let.test-instance-2* (make-instance 'dynamic-let.test-class :slot1 :x :slot2 :y :slot3 :z)) (test dynamic-let.1 (let ((o1 *dynamic-let.test-instance-1*) (o2 *dynamic-let.test-instance-2*)) (with-slots (slot1 slot2 slot3) o1 (is (eq :a slot1)) (is (eq :b slot2)) (is (eq :c slot3))) (with-slots (slot1 slot2 slot3) o2 (is (eq :x slot1)) (is (eq :y slot2)) (is (eq :z slot3))))) (test dynamic-let.2 (let ((o1 *dynamic-let.test-instance-1*) (o2 *dynamic-let.test-instance-2*)) (signals error (slot-dlet (((o1 'slot1) 1)) nil)) (slot-dlet (((o1 'slot2) :k)) (is (eq :k (slot-value o1 'slot2))) (is (eq :y (slot-value o2 'slot2)))))) (test dynamic-let.3 (let ((o1 *dynamic-let.test-instance-1*) (exit nil) (fail nil)) (flet ((make-runner (values) (lambda () (slot-dlet (((o1 'slot2) :start)) (let ((value (slot2 o1))) (unless (eq value :start) (setf fail value))) (loop until (eq exit t) do (setf (slot2 o1) (elt values (random (length values)))) (let ((value (slot2 o1))) (unless (member value values) (setf fail value) (setf exit t)))))))) (let ((r1 (bt:make-thread (make-runner '(:k1 :k2)))) (r2 (bt:make-thread (make-runner '(:k3 :k4)))) (r3 (bt:make-thread (make-runner '(:k5 :k6))))) (sleep .1) (setf exit t) (map nil #'bt:join-thread (list r1 r2 r3)) (is (eq (slot2 o1) :b)) (is (null fail)))))) Then let's test the dynamic variable itself: (test dynamic-let.4 "Test basic dvar operators." (let ((dvar (make-dynamic-variable))) (is (eql 42 (dset dvar 42))) (is (eql 42 (dref dvar))) (ignore-errors (dlet ((dvar :x)) (is (eql :x (dref dvar))) (error "foo"))) (is (eql 42 (dref dvar))))) (test dynamic-let.5 "Test bound-p operator." (let ((dvar (make-dynamic-variable))) (is (not (dynamic-variable-bound-p dvar))) (dset dvar 15) (is (dynamic-variable-bound-p dvar)) (dynamic-variable-makunbound dvar) (is (not (dynamic-variable-bound-p dvar))))) (test dynamic-let.6 "Test makunbound operator." (let ((dvar (make-dynamic-variable))) (dset dvar t) (is (dynamic-variable-bound-p dvar)) (finishes (dynamic-variable-makunbound dvar)) (is (not (dynamic-variable-bound-p dvar))))) (test dynamic-let.7 "Test locally bound-p operator." (let ((dvar (make-dynamic-variable))) (is (not (dynamic-variable-bound-p dvar))) (dlet ((dvar 15)) (is (dynamic-variable-bound-p dvar))) (is (not (dynamic-variable-bound-p dvar))))) (test dynamic-let.8 "Test locally unbound-p operator." (let ((dvar (make-dynamic-variable))) (dset dvar t) (is (dynamic-variable-bound-p dvar)) (dlet ((dvar nil)) (is (dynamic-variable-bound-p dvar)) (finishes (dynamic-variable-makunbound dvar)) (is (not (dynamic-variable-bound-p dvar)))) (is (dynamic-variable-bound-p dvar)))) (test dynamic-let.9 "Stress test the implementation (see :FAKE-PROGV-KLUDGE)." (finishes ; at the same time (let ((dvars (loop repeat 4096 collect (make-dynamic-variable)))) ;; ensure tls variable (loop for v in dvars do (dlet ((v 1)))) (loop for i from 0 below 4096 for r = (random 4096) for v1 in dvars for v2 = (elt dvars r) do (when (zerop (mod i 64)) (pass)) (dlet ((v1 42) (v2 43)) (values)))))) (test dynamic-let.0 "Stress test the implementation (see :FAKE-PROGV-KLUDGE)." (finishes ; can be gc-ed (loop for i from 0 below 4096 do (when (zerop (mod i 64)) (pass)) (dlet (((make-dynamic-variable) 42)) (values))))) All that is left is to test both dynamic variable implementations: BLOG/DLET> (lisp-implementation-type) "ECL" BLOG/DLET> (run-tests) Test DYNAMIC-LET.1... Passed. Test DYNAMIC-LET.2... Passed. Test DYNAMIC-LET.3... Passed. Test DYNAMIC-LET.4... Passed. Test DYNAMIC-LET.5... Passed. Test DYNAMIC-LET.6... Passed. Test DYNAMIC-LET.7... Passed. Test DYNAMIC-LET.8... Passed. Test DYNAMIC-LET.9... Passed. Test DYNAMIC-LET.0... Passed. NIL And with the kludge: BLOG/DLET> (lisp-implementation-type) "SBCL" BLOG/DLET> (run-tests) Test DYNAMIC-LET.1... Passed. Test DYNAMIC-LET.2... Passed. Test DYNAMIC-LET.3... Passed. Test DYNAMIC-LET.4... Passed. Test DYNAMIC-LET.5... Passed. Test DYNAMIC-LET.6... Passed. Test DYNAMIC-LET.7... Passed. Test DYNAMIC-LET.8... Passed. Test DYNAMIC-LET.9... Passed. Test DYNAMIC-LET.0... Passed. NIL Summary In this post we've made our implementation to work on SBCL even when there are more than a few thousand dynamic variables. We've also added a simple test suite that checks the basic behavior. As it often happens, after achieving some goal we get greedy and achieve more. That's the case here as well. In the next (and the last) post in this series I'll explore the idea of adding truly thread-local variables without a shared global value. This will be useful for lazily creating context on threads that are outside of our control. We'll also generalize the implementation so it is possible to subclass and implement ones own flavor of a dynamic variable. Full Article
ac One Week E-Book Sale of Vacuum Flowers!!! One Full Week!!! By floggingbabel.blogspot.com Published On :: Tue, 15 Oct 2024 21:14:00 +0000 . Open Road Media, which publishes several of my e-books, has announced a one-week reduction in price of Vacuum Flowers. Starting this October 18 and running through October 25, 2024, it will be available for $1.99. That's in the US only.So if you're an e-book reader and have been curious about my novel... well, there you are.And if you don't already know . . .Vacuum Flowers is what used to be called a Grand Tour of the Solar System. Rebel Elizabeth Mudlark is operating off of stolen wetware and on the run from very dangerous people. She arrives in the inner system on a cometary orbit, which takes her through a great variety of human and post-human societies, including the most dangerous one of all--Earth.That bit about the cometary orbit is not incidental. Comets enter the Inner System on either a hyperbolic or a parabolic orbit. The one is open, the other closed. I knew that the book would end with Rebel Elizabeth Mudlark standing in the stardocks with a coffin at her feet. But I didn't know if the person within the coffin would be alive or dead or if REM would someday return to the Inner System or was leaving it forever. I only decided that when I came to write the last page.* Full Article
ac One-Day E-Book Sale of Vacuum Flowers By floggingbabel.blogspot.com Published On :: Tue, 12 Nov 2024 15:01:00 +0000 .Once again, one of my e-books will briefly be on sale! Vacuum Flowers will be available in the US for only $1.99. Here's the news from Open Road Media:Hello,We are pleased to let you know that the following ebook(s) will be featured in price promotions soon.ISBN13TitleAuthorPromo TypeCountryStart DateEnd DatePromo Price9781504036504Vacuum FlowersSwanwick, MichaelORM - Portalist NLUS2024-11-132024-11-13$1.99Open Road will promote the feature via social media. We hope you can share the deal with your network as well. You can subscribe to the newsletters at the links below so that you will get the direct link to the deal on the day that it appears.NewsletterLink Early Bird Books Subscribe Now The LineupSubscribe NowThe PortalistSubscribe NowMurder & MayhemSubscribe NowA Love So TrueSubscribe NowThe ArchiveSubscribe NowThe ReaderSubscribe NowPlease let us know if you have any questions. We are thrilled to be part of this promotion; hope you are too!Best,The Open Road Editorial TeamAnd because you've probably wondered . . .I've been asked this many times, but the answer is no: I don't have a nude drawing of Gardner Dozois hanging in my living room. It's in the upstairs hallway. Anyway, he's wearing a sheet, so much of him is covered.Robert Walters posed Gardner as the evil genius Jonaman for one of the illos (back when SF magazines had illustrations) that went with the serialization of Vacuum Flowers in Asimov's, way back when.It's not the sightliest picture. But it is treasured.* Full Article
ac Don 039 t mess with Acorns By satwcomic.com Published On :: Don 039 t mess with Acorns View Comic! Full Article
ac Why Virat Kohli, Jasprit Bumrah were missing from Perth nets; India ramp up privacy amid Manchester United-like security - Hindustan Times By news.google.com Published On :: Wed, 13 Nov 2024 04:53:31 GMT Why Virat Kohli, Jasprit Bumrah were missing from Perth nets; India ramp up privacy amid Manchester United-like security Hindustan TimesVirat Kohli in focus: Intense net session begins for upcoming Test series against Australia The Times of IndiaVirat Kohli in Australia for BGT: A timeline India TodayBlack veil of secrecy: India begin training in privacy in Perth ESPNcricinfoIndia to play intra-squad warm-up match at WACA on Friday ahead of Australia Tests but BCCI denies public viewing Hindustan Times Full Article
ac old growth grow back By www.marriedtothesea.com Published On :: Wed, 15 Nov 2023 04:00:00 EST Today on Married To The Sea: old growth grow backThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac im on those golden teachers By www.marriedtothesea.com Published On :: Wed, 27 Dec 2023 04:00:00 EST Today on Married To The Sea: im on those golden teachersThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac machine that makes fucks By www.marriedtothesea.com Published On :: Wed, 20 Mar 2024 04:00:00 EDT Today on Married To The Sea: machine that makes fucksThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac its actually fine By www.marriedtothesea.com Published On :: Wed, 17 Apr 2024 04:00:00 EDT Today on Married To The Sea: its actually fineThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac track my candy bar By www.marriedtothesea.com Published On :: Wed, 01 May 2024 04:00:00 EDT Today on Married To The Sea: track my candy barThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac you cant attack By www.marriedtothesea.com Published On :: Wed, 26 Jun 2024 04:00:00 EDT Today on Married To The Sea: you cant attackThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac o but my back aches By www.marriedtothesea.com Published On :: Wed, 03 Jul 2024 04:00:00 EDT Today on Married To The Sea: o but my back achesThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac traveling across the ocean By www.marriedtothesea.com Published On :: Wed, 24 Jul 2024 04:00:00 EDT Today on Married To The Sea: traveling across the oceanThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac put that back jason By www.marriedtothesea.com Published On :: Wed, 02 Oct 2024 04:00:00 EDT Today on Married To The Sea: put that back jasonThis RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see! Full Article autogen_comic
ac Webinar: nieuw HPV-screeningsbeleid en -vaccinatie - 19 november 2024 - Medi-Sfeer By news.google.com Published On :: Wed, 13 Nov 2024 08:08:57 GMT Webinar: nieuw HPV-screeningsbeleid en -vaccinatie - 19 november 2024 Medi-Sfeer Full Article
ac Gladiator 2: De langstverwachte film van het jaar is een mission impossible - VRT.be By news.google.com Published On :: Wed, 13 Nov 2024 04:30:06 GMT Gladiator 2: De langstverwachte film van het jaar is een mission impossible VRT.beHele verhaal bekijken via Google Nieuws Full Article
ac Amerikaanse militair Jack Teixeira (22), die geheime informatie over oorlog lekte, krijgt 15 jaar cel - Het Nieuwsblad By news.google.com Published On :: Wed, 13 Nov 2024 06:22:28 GMT Amerikaanse militair Jack Teixeira (22), die geheime informatie over oorlog lekte, krijgt 15 jaar cel Het NieuwsbladJonge Amerikaanse militair die Pentagon-documenten lekte veroordeeld tot 15 jaar cel VRT.beLive - Oorlog in Oekraïne. Jack Teixeira, die geheime documenten over oorlog lekte, veroordeeld tot 15 jaar cel • Noord-Koreaanse soldaten betrokken bij gevechten, zeggen VS De Morgen15 jaar cel voor Amerikaanse militair die geheime documenten lekte NOS15 jaar cel voor Amerikaanse militair die geheime informatie op internet deelde NU.nl Full Article
ac Grote verkeershinder verwacht in Brussel door betoging boeren - De Standaard By news.google.com Published On :: Wed, 13 Nov 2024 05:59:23 GMT Grote verkeershinder verwacht in Brussel door betoging boeren De StandaardVandaag en morgen grote verkeershinder verwacht in Brussel door betoging boeren en taxichauffeurs Het NieuwsbladBetogingen én verkeersellende in Brussel verwacht morgen en donderdag, ook gevolgen voor wie naar Rode Duivels gaat Het Laatste Nieuws2 dagen hinder in Brussel door boerenprotest en taxiprotest VRT.bePolitie verwacht grote verkeershinder door betoging boeren en taxi's BRUZZ Full Article
ac Convert Old Junk Bikes Into Race-Ready Fixed Gear Bikes in No Time! By cheezburger.com Published On :: Thu, 04 Oct 2012 08:00:00 -0700 EIGHTINCH shows us how to fix up old bikes using a fairly basic conversion kit. You'll need: Amelia wheels with tires & tubes 16t cog lockring Courier cranks A bottom bracket A KMC chain More videos for both seasoned and amateur bike enthusiasts here! Full Article bicycle bikes How To Video
ac Protecting Itself From The Impending Cactus Attack By cheezburger.com Published On :: Fri, 17 Jun 2011 04:00:00 -0700 He'll just wait this one out. Cacti can't survive without water, right? ~NSHA Full Article
ac Racing Stripes By cheezburger.com Published On :: Wed, 14 Mar 2012 06:00:00 -0700 You're doing them wrong. Full Article car door masking tape plastic plastic bag
ac Donegal captain on comeback trail By www.bbc.co.uk Published On :: Mon, 09 Apr 2012 20:49:50 GMT Donegal captain Michael Murphy hopes he will be fit to play in next month's Ulster championship preliminary round tie against Cavan. Full Article Northern Ireland
ac Justin McMahon fit to face Armagh By www.bbc.co.uk Published On :: Tue, 15 May 2012 16:42:42 GMT Tyrone expect Justin McMahon to be fit to play in the Ulster championship opener against Armagh on June 10. Full Article Northern Ireland
ac USC football placed on 1 year of probation, fined for coaching staff violations By www.foxsports.com Published On :: Tue, 12 Nov 2024 16:38:10 -0500 Southern California’s football program has been fined $50,000 and placed on probation for one year by the NCAA because of multiple violations of coaching staff rules over two seasons Full Article college-football
ac Bev Priestman fired as Canada women's soccer coach after Olympic drone scandal By www.foxsports.com Published On :: Tue, 12 Nov 2024 17:55:11 -0500 Canada women's soccer coach Bev Priestman has been fired after an independent review of a drone surveillance scandal at the Paris Olympics Full Article soccer
ac Michael Irvin asked Deion Sanders about coaching the Cowboys | Speak By www.foxsports.com Published On :: Wed, 13 Nov 2024 01:34:13 +0000 Michael Irvin asks Deion Sanders about the possibility of coaching the Dallas Cowboys, sparking a funny moment and laughter. Full Article college-football
ac Tom Brady’s 3 Stars of Week 10: Lamar Jackson, Ja'Marr Chase, Leo Chenal | DIGITAL EXCLUSIVE By www.foxsports.com Published On :: Wed, 13 Nov 2024 02:09:54 +0000 Tom Brady gave his 3 stars of Week 10 which included Baltimore Ravens QB Lamar Jackson, Cincinnati Bengals WR Ja'Marr Chase and Kansas City Chiefs LB Leo Chenal. Full Article nfl