hal

Triple Wins For Equestrians In CEA Challenges

The Overall Regional and Mini Caribbean Equestrian Association’s Dressage Challenge results have been tallied and recently announced, with Bermuda making an excellent showing to claim multiple wins. A spokesperson said, “Once again, the annual Regional & Mini Challenges came to very successful conclusions for Bermuda competitors who can now boast of securing overall winnings as […]




hal

Bermuda To Compete In FEI World Challenge

The Bermuda Equestrian Federation announced that Bermuda will compete the annual FEI Jumping World Challenge. A spokesperson said, “Bermuda show jumpers are gearing up to compete in the 2024 FEI Jumping World Challenge – the FEI 46th edition of this event. “The Challenge provides local show jumping equestrians an opportunity to compete in an international […]




hal

Bermuda’s FEI Jumping Challenge Round Two

Round 2 of the 2024 FEI Jumping World Challenge was held at the National Equestrian Center. In the 1.20 – 1.30m Category A Division, JayLynn Hines riding Toto D’ysenbeeck Z finished first with a time of 68.97, but they had a combined 23 Penalty Fault Points. Tyler James and Cruise Control won the 1.10 – […]




hal

FEI Jumping World Challenge On Saturday

Bermuda’s show jumpers will compete in the final phase of the 2024 FEI Jumping World Challenge. Bermuda has competitors in all three categories. Competition #3 will take place on Saturday, March 23rd at the National Equestrian Center on Vesey Street. The judges for the event include FEI level 2 – John Flisk from the United […]




hal

Photos & Video: FEI Jumping World Challenge

[Updated] Bermuda’s show jumpers showcased their skill and determination as they competed in the 2024 FEI Jumping World Challenge’s final phase at the National Equestrian Center on Vesey Street this weekend. We will update with the results as able. Update 7.50pm: A spokesperson said, “The final phase of the 2024 FEI Jumping World Challenge [FEI […]




hal

Bermuda Shines At 2023 FEI Jumping Challenge

The 2023 FEI World Jumping Challenge came to a successful conclusion for Bermuda with Philip Correia, riding his horse Junior Cardento, securing 2nd place in the Zone 10 Category A 1.20 – 1.30m division. A spokesperson said, “This dynamic team also ranked 78th overall out of 173 competitors worldwide. Only the top two placing Category A […]




hal

CEA Mini Jumping Challenge & Support Show

Yesterday [Nov 2], the Bermuda Equestrian Federation [BEF] hosted the Bermuda round of the 2024 Caribbean Equestrian Association’s ‘Mini’ Jumping Challenge, along with the BEF Support Show, at the National Equestrian Centre. A spokesperson said, “On Saturday, 2nd November, the Bermuda Equestrian Federation hosted the Bermuda round of the 2024 Caribbean Equestrian Association’s ‘Mini’ Jumping […]




hal

Column: The Hidden Challenges Of Stroke

[Column written by Dr Kimberley Watkins] Stroke, a leading cause of long-term disability, often brings with it a host of hidden challenges that are not immediately apparent to the casual observer. While physical impairments such as paralysis may be noticeable, there are many invisible disabilities that stroke survivors may face, making their journey to recovery […]




hal

Ship Hits Whale Before Traveling To Bermuda

The Norwegian Breakaway apparently hit a 45-foot Sei whale when its thruster malfunctioned while preparing to dock in Manhattan on Sunday [May 4], shortly before setting sail for Bermuda. The carcass of the whale washed ashore later that day, and investigators are now working to determine if the collision with the large cruise ship caused […]




hal

Golf: 2024 BGA Team Challenge Winners

The Bermuda Golf Association hosted their 2024 BGA Team Challenge title event at the Tucker’s Point Club. The team Fantastic Fore of Angela Cook, Elaine Gaugain, Sarah Murphy-Christopher and Sue Maisonneuve claimed the title. Their Net Stableford total of 91 was 2 points clear of team GHIN & Tonics of Paddy Graham, Richard Fulton, David […]




hal

Motorsports Hall Of Fame Event To Be Held

[Written by Stephen Wright] Icons from karting, street biking, dirt biking and powerboat racing will be inducted into the Bermuda Motorsports Hall of Fame at the Bermuda Underwater Exploration Institute on March 26. The Bermuda Karting Club [BKC], the Bermuda Motocross Club [BMC], the Bermuda Power Boat Association [BPBA], and the Bermuda Motorcycle Racing Club […]




hal

Motorsports Hall Of Fame Inductees Named

[Written by Stephen Wright] Icons from karting, street biking, dirt biking and powerboat racing will be inducted into the Bermuda Motorsports Hall of Fame at the Bermuda Underwater Exploration Institute on Sunday [March 26]. The Bermuda Karting Club [BKC], the Bermuda Motocross Association [BMA], the Bermuda Power Boat Association [BPBA], and the Bermuda Motorcycle Racing […]




hal

Sebastian Coe To Speak At Triangle Challenge

Lord Sebastian Coe, President of World Athletics, will be the honorary guest speaker for the Chubb Bermuda Triangle Challenge on January 17-19, 2025. A spokesperson said, “The Chubb Bermuda Triangle Challenge [CBTC] is pleased to announce that the President of the World Athletics, Lord Sebastian Coe CH, KBE, has agreed to be the honorary guest […]




hal

Brian Hall Makes Xtream Rock Grand Prix Debut

Brian Hall made his Xtream Rock Island Grand Prix debut, taking part in several races, including a main event. In the briggs 206 – all division warm-up race, Hall finished with the 18th fastest time of 40:786; he then finished 22nd with a time of 39:414 in his next warm-up race. In the briggs 206 […]




hal

Photos: Video Game Design Challenge Winners

Bermuda Island Games hosted its 3rd Annual Video Game Design Challenge, where participants showcased their creativity and entrepreneurial skills by designing video games. A spokesperson said, “Bermuda Island Games held their annual Video Game Design Challenge over the weekend, to see which group could come up with the best video game idea. “The theme this […]




hal

Review: Flutist Michael Taylor At Carnegie Hall

[Written by Dale Butler] It was indeed an honour to be asked to review two Bermudians who participated in the American Protégé International Music Competition, Winners Recital, held at Carnegie Hall [NYC]. With Bermudians Dr. Constance Ridley-Smith [piano] placing second in her division and Mr. Michael Taylor [flutist] placing third in his, once again the […]




hal

OBA Warwick Town Hall Meeting On Nov 14

One Bermuda Alliance leader Jarion Richardson and Warwick candidates will host a town hall on November 14 to discuss the OBA’s platform and community issues. A spokesperson said, “Join One Bermuda Alliance leader, Jarion Richardson as he and Warwick candidates host a town hall meeting on Thursday, 14 November 2024 at the Warwick Workman’s Club. The […]




hal

A Spider Stellar Engine Could Move Binary Stars Halfway Across a Galaxy

Eventually, every stellar civilization will have to migrate to a different star. The habitable zone around all stars changes as they age. If long-lived technological civilizations are even plausible in our Universe, migration will be necessary, eventually. Could Extraterrestrial Intelligences (ETIs) use stars themselves as stellar engines in their migrations? In broad terms, a stellar …

The post A Spider Stellar Engine Could Move Binary Stars Halfway Across a Galaxy appeared first on Universe Today.




hal

BermudAir Increasing Service To Halifax

BermudAir announced that they are increasing flights on its recently launched service between Bermuda and Halifax to twice a week; the airline is adding a flight on Wednesdays to its schedule starting on July 10th 2024, along with flights on Saturdays. “We’re delighted to be increasing our Halifax flights after launching service in May,” said Adam […]




hal

Strach, hnus a nahota v Aktech X: Projděte si vítězné snímky na téma HALLOWEEN. Který je váš oblíbený?

Říjnové kolo soutěže Reflexu Akty X přináší jedinečnou kombinaci krásy a hrůzy – téma Halloween. Fotografové dostali příležitost propojit aktovou fotografii s prvky tajemna a horroru, což vyústilo ve fascinující galerii plnou odlišných přístupů jednotlivých umělců. Snímky říjnového kola odhalují škálu temných vizuálů, kde se krása lidského těla snoubí s ponurou atmosférou Halloweenu.




hal

Tragické osudy horolezkyň: Japonku nechali kolegové umrznout, Američanka zemřela s úsměvem na rtech

Sportem ku zdraví, říká se. A k trvalé invaliditě, dodávají jiní. V případě horolezectví to ale může dopadnout mnohem hůř. Všechny ty světově známé vrcholky mají svůj smutný seznam těch, kteří padli při jejich zdolávání. A pochopitelně mezi nimi nechybí ani ženy. Hannelore Schmatz se měla stát první Němkou, která zdolala Mount Everest. Na vrchol se dostala i se svým manželem Gerhardem, jakožto nejstarším pokořitelem hory. Jenže u Everestu je pořádně zrádná i cesta dolů. Hannelore se nakonec stala osudnou.




hal

Rise of the Half Moon

Date: October 24, 2024

Location: Global

Tags:




hal

Halloween 2024

Date: October 30, 2024

Location: Global

Tags:




hal

Автор фанатского ремейка Half-Life анонсировали мрачный кооперативный шутер Rogue Point

Релиз Rogue Point запланирован в 2025 году




hal

Halter of Versatility




hal

Our government is using Big Tech companies to circumvent the First Amendment and censor free speech on its behalf

Google, Facebook and Twitter should be treated as state actors under existing legal doctrines. Using a combination of statutory inducements and regulatory threats, Congress has co-opted Silicon Valley to do through the back door what government cannot directly accomplish under the Constitution. Congress is giving Big Tech immunity and more power in exchange for it censoring whatever Congress wants censored. Continue reading




hal

Halloween Projects and Specials

It’s time for our annual reminder that we love Halloween! Our Halloween Project Archives is a great resource for inspiration and ideas. Halloween is one of our favorite holidays, and … we’ve organized dozens of our Halloween projects into categories: costumes, pumpkins, decor and food.




hal

Happy Halloween!

 






hal

This halloween I am dressed as a withered husk, who was made this way by: Satisfactory 1.0

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!




hal

Austin Distance Challenge!

The famous Distance Challenge fridge magnets
It's been a few months, but I finally have some time to sit down and blog my having completed the Austin Distance Challenge (long course), sponsored by the Austin Runners Club.  I'd done most of the events before, but decided to do the challenge itself (six races, culminating in the Austin Marathon), because I wanted to put more structure into my training for the marathon. I'd done several in the 90s, but this was my second of the century and I wanted to do better than my last one (2013).

The first race was the Run Free Texas 80s 8k (for those who don't think in metric, that's about five miles) up in Cedar Park.  Naturally enough, there were a couple of DeLoreans, each outfitted with a flux capacitor.  Time travel being what it is, they were obviously the same car but from different time periods. :-).  The course was through residential neighborhoods and parks and had some rolling hills -- nice for a beginning of the season race.

Back to the Future!
The second race of the Challenge was the Run for the Water Ten Miler.  The course was along Lady Bird Lake and up through Tarrytown and then back downtown, There were some great hills on this course and let me know I needed more hill work...And, ironically enough, it was raining. :-)
Rain and hills
Race three was the Decker Challenge, a half marathon in early December with a course around Decker Lake.  It's notorious for hills and really bad weather.  (The last time I ran it, it was in the 40s and pouring rain).  If anything, last year, it was a bit too warm.  The hills were pretty brutal, though. 
My face when attacking the hills
But Santa was there!
After that, we had a month break until the Rogue Distance Festival 30k (about 18.6 miles) in early January.  This one was fairly cold and probably my least favorite of the events.  It was up in Cedar Park again and ran through residential neighborhoods which was fine.  There was an issue with marking the course, though, so most of us got off track, which meant the mile markers were out of order so it was impossible to figure out a pace. (I think at some point, we were going in circles -- and ended up going about a mile farther than we should've.).  Still, it was my longest run before the marathon and I was kind of glad it happened that way. 
Yay!  I'm done! :-)
With four events done, it was all downhill from there.  Literally.  The 3M Half Marathon starts up in the Great Hills area and runs a straight line down to downtown. It also has a swag bag filled with useful (and not so useful) 3M products.:-)
Leo checks out the swag bag
This one also started out pretty cold and way too early :-). 

Before dawn, in the warm car before the cold race.
I really enjoyed this one, though, and it was a nice preview of many of the neighborhoods on the marathon route.
Finisher!
The piece de resistance, of course, was the Austin Marathon in mid-February.  I like the course, but the first time I ran the Austin Marathon, it was all downhill, starting up north and snaking its way downtown.  Now, there's a good bit of uphill until around mile 18.  I still like the course, though, and it's not like the hills from the Decker Challenge or the Run for the Water races.

I was pretty happy with my time -- my second fastest of the century!  I did it in under 4 hours, which had been my goal.  Next year, I'll work more on speed, but this time, I just wanted to not have my quads seize up in the last two miles :-).

Running through UT campus
Made it! Best time of the century!
Anyway, thanks to everyone involved in putting on the races and the challenge itself: organizers, volunteers, emergency personnel, and all the rest!  You keep Austin running!




hal

Austin Distance Challenge 2016-17

 
This past year, I signed up for the Austin Distance Challenge again, because it was intrinsically fun, but also to ensure that I would get enough running in for the Austin Marathon. The Distance Challenge, sponsored by the Austin Runners Club, involved five races: The Run Free 8k, the Run for the Water 10 miler, the Decker Challenge half marathon, the 3M Half Marathon, and the Austin Marathon.

The Run Free 8K is out in Cedar Park, a considerable distance from downtown.  It leaves from one of the high school football stadiums and winds through residential neighborhoods before returning to the starting line. It's a nice start to the fall training season.


The first piece of the puzzle
Run for the Water goes through downtown and along the lakefront. It's one of the prettiest routes in the challenge and much of it is along routes I train on.

Starting line on Cesar Chavez
The drum group at the finish line
A friend got this shot of me at the starting line.
After that came the Decker Challenge -- a hilly route just east of Austin in Decker, and notorious for terrible weather.  This year, it wasn't bad --- a bit misty with a steady drizzle. By the finish line, my glasses were so fogged up I had to take them off to see anything at all. Which made it difficult to see things like potholes...

Glasses fogging up as I climb the hills
Blindly crossing the finish line

 Not on the Challenge, but still an Austin staple was the Turkey Trot!  One of the more fun races, it usually features a good number of costumes and a large helping of whimsy.



After the holidays, the next race was the 3M Half Marathon. It's almost the exact opposite to the Decker Challenge, because it's all downhill. It starts up in the Great Hills area and winds its way downtown. This year it was a particularly fast run because there was an incredible wind out of the north. Several folks, including myself, were nearly blown over as we ran past the UT football stadium.

A selfie at the starting line
the 3M photographer got a shot of me taking my selfie
After the finish in sight of the Capitol

And the last race was the Austin Marathon!

But. About three weeks before the race, in the middle of the night, I slipped and came down on the edge of my entertainment console and tile floors. Result? A nice set of bruised ribs and a strangely linear scar on my right side.

By race day, I could still feel it a bit but had gone on short runs with only minor discomfort, so I decided to go for it.  The first half went pretty well, but the second was less pleasant.  But I'm still glad I did it...

Looking all chipper and optimistic before the race starts
Vulcan salute for the photographer
Gritting it out with a hundred yards to go
Finished!

So my time for the marathon ended up being a personal worst, although I did make it under five hours :-).

Anyway, thanks to all the organizers, volunteers, emergency personnel, and everyone else involved in putting on these races! You keep Austin running!

Next up? The Capital of Texas Triathlon! Hopefully there won't be rain...




hal

Halfords Mat Lacquer

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.




hal

Joe Marshall: Lisp vs. golang

It's no secret that I'm an aficionado of Lisp. It's my go to language, especially when I don't know what I'm doing. I call it research and prototyping, but it's really just playing around until something works.

We had a need for some auditing of some of our databases at work. They ought to agree with each other and with what GitHub and CircleCI think. It took a couple of weeks part time to prototype a solution in Common Lisp. It showed that the databases were in 99% agreement and found the few points of disagreement and anomalies that we ought to fix or look out for.

I want to integrate this information into a dashboard on one of our tools. I prototyped this by spinning up a Common Lisp microservice that returns the information in JSON format.

But management prefers that new services are written in golang. It would be easier for me to rewrite the service in golang than to try to persuade others to use Common Lisp. It also gives me the opportunity to compare the two languages head to head on a real world problem.

No, this is not a fair comparison. When I wrote the Lisp code I was exploring the problem space and prototyping. I'm much more experienced with Lisp than with golang. The golang version has the advantage that I know what I want to do and how to do it. In theory, I can just translate the Common Lisp code into golang. But then again, this is a “second system” which is not a prototype and has slightly larger scope and fuller requirements. So this cannot be a true head to head comparison.

The first point of comparison is macros (or lack thereof). I generally don't use a lot of macros in Common Lisp, but they come in handy when I do use them. One macro I wrote is called audit-step, which you can wrap around any expresion and it prints out a message before and after the expression is evaluated. The steps are numbered in sequence, and nested steps get nested numbers (like step 2.3.1). If you wrap the major function bodies with this macro, you get a nice trace of the call sequence in the log.

Golang doesn't have macros, but it has first class functions. It's easy enough to write a function that takes a function as an argument and wraps it to output the trace messages. In fact, the macro version in Common Lisp just rewrites the form into such a function call. But the macro version hides a level of indentation and a lambda. In golang, my major functions all start with

func MajorFunction (args) int {
        return AuditStep("MajorFunction", "aux message", func() int {
                // body of MajorFunction
                // Actual code goes here.
        })    
}

The bodies of all my major functions are indented by 16 spaces, which is a little much.

I like higher order functions. I can write one higher order function and parameterize it with functions that handle the specific cases. In my auditing code, one such workhorse function is called collate. It takes a list of objects and creates a table that maps values to all objects in the list that contain that value. To give an example, imaging you have a list of objects that all have a field called foo. The foo field is a string. The collate function can return a table that maps strings to all objects that have that string in the foo field.

collate is very general. It takes a list of objects and four keyword arguments. The :key argument is a function that extracts the value to collate on. The :test argument is a function that compares two keys (it defaults to eql if not specified). The :merger argument is a function to add the mapped object to its appropriate collection in the table (it defaults to adjoin). The :default argument specifies the initial value of a collection in the table (it defaults to nil).

The :merger function is the most interesting. It takes the key and the object and the current value of the table at that key. It returns the new value of the table at that key. The default merger function is adjoin, which adds the object to the collection at the key if it is not already there. But you can specify a different merger function. For example, if you want to count the number of objects at each key, you can specify a merger function that increments a counter.

The functional arguments to the collate function are often the results of other higher order functions. For example, the :key argument is often the result of composing selector functions. The :merger argument is often the result of composing a binary merge function with a unary transformer function. The transformer function is often the result of composing a number of primitive selectors and transformers.

In Common Lisp, it is quite easy to write these higher order functions. We can compose two unary functions with the compose2 function:

(defun compose2 (f g)
  (lambda (x) (funcall f (funcall g x)))

and then compose as many functions as we like by fold-left of compose2 starting with the identity function:

(defun compose (&rest fs)
  (fold-left #'compose2 #'identity fs))

We can compose a binary function with a unary function in three ways: we can pipe the output of the binary function into the unary function, or we can pipe the output of the unary function into one or the other of the inputs of the binary function.

(defun binary-compose-output (f g)
  (lambda (x y) (funcall f (funcall g x y))))

(defun binary-compose-left (f g)
  (lambda (x y) (funcall f (funcall g x) y)))

(defun binary-compose-right (f g)
  (lambda (x y) (funcall f x (funcall g y))))

The collate function can now assume that a lot of the work is done by the :key and :merger functions that are passed in. It simply builds a hash table and fills it:

(defun collate (item &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)))

So suppose, for example, that we have a list of records. Each record is a three element list. The third element is a struct that contains a string. We want a table mapping strings to the two element lists you get when you strip out the struct. This is easily done with collate:

(collate records
  :key (compose #'get-string #'third)
  :test #'equal      ; or #'string= if you prefer
  :merger (binary-compose-right (merge-adjoin #'equal) #'butlast))

The audit code reads lists of records from the database and from GitHub and from CircleCI and uses collate to build hash tables we can use to quickly walk and validate the data.

Translating this into golang isn't quite so easy. Golang has first class function, true, but golang is a statically typed language. This causes two problems. First, the signature of the higher order functions includes the types of the arguments and the return value. This means you cannot just slap on the lambda symbol, you have to annotate each argument and the return value. This is far more verbose. Second, higher order functions map onto parameterized (generic) types. Generic type systems come with their own little constraint language so that the computer can figure out what concrete types can correctly match the generic types. This makes higher order functions fairly unweildy.

Consider compose2. The functions f and g each have an input and output type, but the output type of g is the input type of f so only three types are involved

func Compose2[T any, U any, V any](f func(U) V, g func(T) U) func(T) V {
	return func(x T) V {
		return f(g(x))
	}
}

If want to compose three functions, we can write this:

func Compose3[T any, U any, V any, W any](f func(V) W, g func(U) V, h func(T) U) func(T) W {
	return func(x T) W {
		return f(g(h(x)))
	}
}
The generic type specifiers take up as much space as the code itself.

I don't see a way to write an n-ary compose function. It would have to be dynamically parameterized by the intermediate types of all the functions it was composing.

For the collate function, we can write this:

func Collate[R any, K comparable, V any](
	list *Cons[R],
	keyfunc func(R) K,
	merger func(V, R) V,
	defaultValue V) map[K]V {
	answer := make(map[K]V)
	for list != nil {
		key := keyfunc(list.Car)
		probe, ok := answer[key]
		if !ok {
			probe = defaultValue
		}
		answer[key] = merger(probe, list.Car)
		list = list.Cdr
	}
	return answer
}

We have three types to parameterize over: the type of the list elements (i.e. the record type) R, the type of the key K, and the type of the value V. The key type is needs to be constrained to be a valid key in a map, so we use the comparable constraint. Now that we have the types, we can annotate the arguments and return value. The list we are collating is a list of R elements. The key function takes an R and returns a K. The merger takes an existing value of type V and the record of type R and returns a new value of type V.

The magic of type inference means that I do not have to annotate all the variables in the body of the function, but the compiler cannot read my mind and infer the types of the arguments and return value. Golang forces you to think about the types of arguments and return values at every step of the way. Yes, one should be aware of what types are being passed around, but it is a burden to have to formally specify them at every step. I could write the Common Lisp code without worrying too much about types. Of couse the types would have to be consistent at runtime, but I could write the code just by considering what was connected to what. In golang, the types are in your face at every function definition. You not only have to think about what is connected to what, you have to think about what sort of thing is passed through the connection.

I'm sure that many would argue that type safety is worth the trouble of annotation. I don't want to argue that it isn't. But the type system is cumbersome, awkward, and unweildy, especially when you are trying to write higher order functions.

It is taking me longer to write the golang version of the audit service than it did to write the Common Lisp version. There are several reasons. First, I am more experienced with Common Lisp than golang, so the right Common Lisp idioms just come to mind. I have to look up many of the golang idioms. Second, the golang code is trying to do more than the Common Lisp code. But third, golang itself introduces more friction than Common Lisp. Programs have to do more than express the algorithm, they have to satisfy the type system.

There are more points of comparison between the two languages. When I get frustrated enough, I'll probably write another post.




hal

Joe Marshall: Don't Try to Program in Lisp

A comment on my previous post said,

The most difficult thing when coming to a different language is to leave the other language behind. The kind of friction experienced here is common when transliterating ideas from one language to another. Go (in this case) is telling you it just doesn't like to work like this.
Try writing simple Go, instead of reaching for Lisp idioms. Then find the ways that work for Go to express the concepts you find.

That's not at all how I approach programming.

A friend of mine once paid me a high compliment. He said, “Even your C code looks like Lisp.”

When I write code, I don't think in terms of the language I'm using, I think in terms of the problem I'm solving. I'm a mostly functional programmer, so I like to think in terms of functions and abstractions. I mostly reason about my code informally, but I draw upon the formal framework of Lambda Calculus. Lambda Calculus is a simple, but powerful (and universal) model of computation.

Programming therefore becomes a matter of expressing the solution to a problem with the syntax and idioms of the language I'm using. Lisp was inspired by Lambda Calculus, so there is little friction in expressing computations in Lisp. Lisp is extensible and customizable, so I can add new syntax and idioms as desired.

Other languages are less accommodating. Some computations are not easily expressable in the syntax of the language, or the semantics of the language are quirky and inconsistent. Essentially, every general purpose fourth generation programming language can be viewed as a poorly-specified, half-assed, incomplete, bug-ridden implementation of half of Common Lisp. The friction comes from working around the limitations of the language.




hal

Halcyon Afternoon and Why I Wrote It

.




This is a particularly pleasant time for me. To begin with, I'm at the World Fantasy Convention, where I'll see a lot of old friends and serve as toastmaster. And I have two new Mongolian Wizard stories coming out (I apologize for the delay), one today and one tomorrow at Reactor Magazine.

Today's story, "Halcyon Afternoon," is atypical for the series. It's not as violent as these stories tend to be. That's because I felt that after undergoing so much suffering and loss, Franz-Karl Ritter deserved at least one afternoon of contentment and bliss. Even his wolf, Freki, got the day off.

Of course... Ritter's luck being what it is, and all of Europe being entangled in a wizard war, the afternoon would not prove entirely blissful.

You can read the story here. Or you can find the entire series of Mongolian Wizard stories--ten so far--here. Or you can simply go to Reactor Magazine and wander about happily. It's full of great stories and terrific non-fiction.

And tomorrow . . .

Ritter's luck takes a downturn--along with everyone else's--in "Dragons of Paris." An old friend pops up, a relationship turns difficult, and a battle where victory seems certain goes sour.

(And now, I'm off to the convention!)


Above: Illustration by Dave Palumbo. It's not only beautiful but true to the story. I'm grateful for both of those.

*




hal

My Halloween Season Story, "Unquiet Graves," in CLARKESWORLD

 .


 

I am always happiest when a story of mine comes into print. Today, I have the joy of introducing you to "Unquiet Graves," a seasonal tale of graveyard misbehavior and betrayal. Oh, and there's nothing supernatural about it at all.

You can read the story here. But if you're like me, you'll just go to Clarkesworld, look over the table of contents, and decide which story you want to read first. Mine by preference, but follow your whim.

 

And for those who like trivia . . .

I came up with the handheld's app many long years ago and it took forever to come up with a story for it. You'll notice that it is left unnamed in the story. That's because its secret name was "The Graveyard Reader." Which is the title of a well-known story by Theodore Sturgeon.  While I was writing the story, I thought of it as "The New Graveyard Reader." But Sturgeon's story and mine go off in totally different directions, and giving mine (or even the app) a title suggesting there was some implicit connection between the two would only cause confusion.

The title I finally came up with was derived from "The Unquiet Grave" by that most prolific of all poets, Anonymous. If you look it up, I suggest you do so after reading my story. It gives away some of the plot.


*

 







hal

Matthew Nicholson throws down a two-handed slam to help Northwestern lead over UIC going into the half

Matthew Nicholson threw down a two-handed slam to help the Northwestern Wildcats lead over the the UIC Flames going into the half.




hal

John Hugley IV records a NASTY block to help Xavier hold on to 40-25 lead at halftime vs. Jackson State

John Hugley IV recodrded a NASTY block to help Xavier hold on to 40-25 lead at halftime vs. Jackson State




hal

Stay safe this Halloween with NFPA’s fire safety tips

Halloween is creeping up on us. The rush is on to find the perfect pumpkin, the spookiest costume, and the best candy for trick-or-treaters. However, along with all this excitement comes potential fire hazards related to seasonal decor and costumes. Fortunately, fire risks can be avoided by following the National Fire Protection Association’s (NFPA) Halloween safety precautions.




hal

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…




hal

Re-Appearing Dark Fleet Vessel Underlines Zombie Ship Challenge






hal

Mastering Rapport: Overcoming Challenges in Digital and In-Person Communication

Rapport is something we all seek, even if we don’t think about it every day. It’s that sense of connection, of feeling understood, and of moving smoothly with others in sync. Whether in our professional lives or at home, rapport matters—and it matters a lot more than we might realize. In today’s fast-paced, digital world, ... Read more

The post Mastering Rapport: Overcoming Challenges in Digital and In-Person Communication appeared first on LifeHack.