vs

Women’s basketball: CU Buffs aim to fix shooting woes ahead of matchup vs. Nevada

Although Colorado women’s basketball coach JR Payne knew she was going to have an almost completely new roster this year, she was encouraged by several qualities the group possessed.




vs

BVSD, SVVSD look to help teachers use AI while protecting student data

The Boulder Valley and St. Vrain Valley school districts are working to help teachers harness the power of AI, while keeping student data safe and teaching their students how to use the emerging technology ethically.






vs

Hip Hop vs. The Grammys?



And the first Grammy for a hip hop act went to…




vs

Renck & File: Is it time to start asking if Gabe Landeskog will ever skate for Avs again?

The Avs captain has missed two consecutive seasons because of his right knee and recently had a setback in his rehabilitation that required him to stop skating.




vs

Ronda vs. MJ : MJ's False Judgement



Don't judge a book by its cover.



  • Being Mary Jane

vs

Ronda vs. MJ: Tables Turn



Hidden sources reveal true character.



  • Being Mary Jane

vs

Ronda vs. MJ: Risky Business



Backs against the wall and jobs on the line.



  • Being Mary Jane

vs

Video: Bermuda vs Grenada Volleyball

[Updated] The Bermuda national women’s volleyball team – who have won their first four games in this event — is matching up against Grenada this evening [Oct 21] as part of the ECVA Women’s Volleyball Championships, and you can tune in and watch live below. Update: The Bermuda women’s national volleyball team were defeated in their […]




vs

Video: Mexico vs Bermuda PanAm Hockey

[Updated] The Bermuda national women’s hockey team is matching up against Mexico this evening [Sept 22] as part of the Pan American Challenge at the National Sports Centre, and you can watch replay below. Update: The Bermuda women’s national hockey team faced tournament favourites Mexico in their second pool game in the Women’s Pan American Challenge […]




vs

Photos & Video: Bermuda vs Guyana Hockey

[Updated] The Bermuda national women’s hockey team is facing off against Guyana this afternoon [Sept 28] for the bronze medal as part of the Pan American Challenge at the National Sports Centre. Update: Guyana won by a score of 2-1 Update | Photos added below Related Stories Video: Cal Field Hockey Team Defeat Bermuda Field […]




vs

RAN Announce U19, Women XVs Tournaments

Rugby Americas North [RAN] announced the venue for the 2024 Rugby Americas North Men’s Under-19 and Senior Women’s XVs Tournament alongside Federación Mexicana de Rugby [FMRU]. The five-day event will take place July 10th – 14th in Mexico City – held at the Universidad Nacional Autónoma de México’s [UNAM] Deportivo Alfredo Harp Helu grounds, where […]




vs

Photos & Video: Cayman Vs Bermuda Rugby

Bermuda hosted the Cayman Islands in an international rugby match at the National Sports Center this weekend, with Bermuda being defeated 44 – 12. A spokesperson previously said, “These games are part of the Rugby America’s North [RAN] qualification pathway, a competition spread over three years from 2024-2026. “This weekend’s match-up is especially significant as […]




vs

PwC Hosts Reinsurers At RVS In Monte Carlo

PwC hosted over 400 reinsurance executives across three events at the annual Rendez-Vous de Septembre [RVS] in Monte Carlo this week. A spokesperson said, “Key themes at this year’s RVS – the largest international gathering in the industry – were the ongoing hard market, improved resiliency of reinsurers, AI and concerns around increasing climate-related risks.” […]




vs

Photos: Fans Attend Bermuda vs Honduras

On June 9, 2024, fans gathered at the Flora Duffy Stadium in Devonshire for a CONCACAF football match between Bermuda and Honduras, with the match seeing Honduras claim a 6-1 victory. Related Stories Photos: Spectators Supporting Bermuda Team Photos: Devonshire Cougars vs Somerset Photos, Video: Bermuda Fans At Football Match Photos: Bermuda Football Association Awards […]




vs

Video & Photos: OBA vs PLP Sumo Wrestling

[Updated with photos] A political rivalry took to the ring today [Apr 18] as a Progressive Labour Party MP and One Bermuda Alliance Minister donned sumo wrestling suits and competed for a good cause. The Minister of Community, Culture & Sports Wayne Scott matched up against Opposition MP Lawrence Scott at the PHC Community Fun […]




vs

Netflix Top 10 Week of Nov. 4: "Countdown: Paul vs. Tyson" Enters the Ring; "Meet Me Next Christmas" Unwraps #1

Season 2, Act I of "Arcane," the animated series based on the popular multiplayer online battle arena game League of Legends, also had a strong debut, taking second place with 6.3M views.




vs

Příběh bratrů Menendezových: druhá řada netflixovského cyklu Monstrum neví, zda je dokument, nebo seriál

Jelikož true crime seriálů z produkce Netflixu diváci zjevně nemají dost, na streamovací platformě běží příběh o bratrech Menendezových. Jedná se o druhou řadu seriálu Iana Brennana a Ryana Murphyho Monstrum, v tomto případě Monstra; první sezóna se věnovala Jeffreymu Dahmerovi. Jen chvíli po premiéře druhé řady vyšel o bratrech, kteří zabili své rodiče, i dokument. Možná kvůli tomu, nebo kvůli dokončované další řadě Monster, se bratrům Menendezovým od tvůrců nedostalo dostatečné péče…




vs

Trump a podivný sen libertariánských miliardářů o vlastních královstvích

Během předvolební kampaně Donalda Trumpa se pozornost soustředila především na jeho kontroverzní výroky a soudní stíhání. Daleko zajímavější pohled ale skýtá volební program zveřejněný na Trumpových osobních stránkách. Nejenže napovídá, kdo za jeho kampaní stál, ale také, po čem šedé eminence v jejím pozadí touží. Pokud se například naplní sliby vizionářské sekce Kvantový skok, mohou v USA brzy vzniknout samosprávné městské mikrostáty ovládané autoritářskými miliardáři. V programu Donalda Trumpa pro ně existuje hezké jméno Freedom Cities – Města svobody.




vs

Zdechovský: Jak Rusko napomáhá ilegální migraci z Afriky? Špinavou práci dělají wagnerovci

Kreml dokáže využít opravdu jakýkoli možný způsob, který může oslabit Evropu zevnitř. Každý problém, s nímž se Evropa zrovna potýká, vnímá Moskva jako svoji potenciální příležitost. A jelikož Rusko dobře ví, že k hlavním výzvám Evropy patří ilegální migrace, snaží se ještě přisypávat sůl do krvácející rány a problém ještě více prohloubit.




vs

Jana Bendová: Donald Trump jr. se vysmál Ukrajině a Václav Klaus vidí ženám do duše, za vším jsou zbraně

O kapesné přijdete za 38 dní. Těmito slovy se vysmál na sociálních sítích ukrajinskému prezidentu Zelenskému Donald Trump junior. Běží dohady, zda tím naznačil příští kroky zvoleného prezidenta, taťky Donalda Trumpa, protože i těch osmatřicet dní je divný termín. Možná, kdyby žila Donaldova matka, zlínská rodačka Ivana, připomněla by mu, co to obnáší žít pod ruskou nadvládou a agresí. Sužovaná Ukrajina má přesto naději, že ji prezident Trump nehodí přes palubu. Jako každý sebestředný vládce touží po čestné a hrdinné pozici v historii. Aby příští generace věděly, že se prezidentu nejmocnější země světa Donaldu Trumpovi nerozklepala kolena před jedním vraždícím diktátorem.




vs

Taiwan Mandarin vs. Mainland Mandarin

In recent weeks and months, we've been having many posts and comments about Taiwanese language.  Today's post is quite different:  it's all about the difference between Mandarin as spoken on the mainland and as spoken on Taiwan. "Words of Influence: PRC terms and Taiwanese identity", by Karen Huang, Taiwan Insight (8 November 2024) What is […]




vs

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.




vs

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.)




vs

2024/11/05 - Трамп vs Харрис

Очень мне этого не хочется, но я считаю, что Америка выберет Трампа. Почему? Не потому, что ей симпатичен 80-летний вздорный старик. И даже не потому, что он уже был президентом (средний американец, как любой другой казуал, готов голосовать за старое). А просто потому что американцы не готовы выбрать своим президентом черную бабу. Вы скажете — как же так, это же Мекка политкорректности, дивёрсити и мультикультуризма. Так вот именно поэтому. Нарратив о равенстве женщин и рас, который Америка транслирует громче всех, на самом деле означает, что слишком многие там с этим не согласны и их требуется переспорить. Любая агрессивная декларация прав — не баловство, а болезненная реакция общества на существующие проблемы. Никому ведь не придет в голову устраивать демонстрации в поддержку лыжников — нет у лыжников проблем. Проблемы есть у женщин: им действительно реже удается построить высокооплачиваемую карьеру (не важно, по какой причине), они действительно часто сталкиваются с насилием и дискриминацией. Проблемы есть и у черных: их действительно постоянно убивают американские полицейские. Их действительно называют ниггерами. Многие их действительно считают людьми второго сорта. Да, среди них есть прекрасные люди, музыканты, учёные и айтишники. Но большая масса черных живет в своих гетто и предпочитает не учиться, не работать, а заниматься криминалом и наркотой. Это не я придумал, это бессердечная сука статистика. Впрочем, тут не важна причина, важно, что есть в американском обществе такое отношение, и всё. Именно поэтому чем громче пропагандистские вопли о том, что лыжники имеют такие же права, как гребцы и велосипедисты, тем чётче следует понимать, что это крик о проблеме: лыжников, получается, действительно не любят. А значит, и в президенты не выберут. Всё это нетрудно видеть и в исторических фактах: у Америки не было опыта женщины-президента, и уж особенно черной женщины-президента. В Британии с этим норм, там испокон веков были королевы или Тетчер, в Германии — Меркель, в ортодоксальном Израиле — Голда Меир, про современную Европу не говорю, даже в сверхпатриархальной гипермаскулинной Грузии президент сейчас женщина. Даже в истории России были великие императрицы, хотя советская и постсоветская власть, тяготеющая к старым хрычам, сильно пошатнула народную готовность поклоняться верховной женщине. Но в США изначально с 1789 года, со времён первого Джорджа Вашингтона, президентом всегда был только белый мужик с очень серьезным хлебальником. И чем громче кричат о своих правах американские темнокожие феминистки, тем понятнее, что им реально есть за что и с кем бодаться. Поэтому я думаю, что у Харрис шансов нет. И во многом — именно по причине дискриминации, которую наконец-то средняя масса сможет проявить абсолютно прозрачно и безнаказанно. А жаль.




vs

Providence's Oswin Erhunmwunse throws down a POWERFUL two-hand dunk vs. Hampton

Providence Friars' Oswin Erhunmwunse threw down a powerful two-handed dunk against the Hampton Pirates.




vs

Mavs' Klay Thompson cheered by 400 Warriors employees in return to Golden State

Klay Thompson was greeted by some 400 cheering Warriors employees showing their love and appreciation for the former Golden State star and lined up along his path to the Dallas locker room




vs

Bensley Joseph finds Corey Floyd Jr. for a TOUGH ALLEY-OOP dunk as Providence leads 47-43 vs. Hampton

Providence Friars' Bensley Joseph found Corey Floyd Jr. for a tough alley-oop dunk against the Hampton Pirates.




vs

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




vs

2024-25 NBA championship odds: Celtics, Thunder favored; Cavs rising

A number of contenders are chasing the defending champion Celtics on the oddsboard. Check out where things stand, with insight from Jason McIntyre.




vs

Ford is slashing the working hours of some of its German factory employees amid what it calls a 'significantly lower than expected' demand for its EVs

Ford is getting its workers in Cologne, Germany, to work fewer hours. The carmaker said a "lower than expected demand for electric vehicles" brought on the shift. The carmaker has more than 4,000 employees at its Cologne plant. Ford is slashing the work hours of its manufacturing plant workers in…




vs

An all-new 650 hp Cadillac, Hertz is selling off more EVs, and something weird at Tesla

On today’s exciting episode of Quick Charge, we’ve got the Vistiq! It’s all-new, three row SUV from Cadillac that packs 650 hp and can go from 0-60 mph in under 3.5 seconds, a serious word from Rivian, and something fishy at Tesla. We’ve also got word that Hertz is selling off even more of its…





vs

Writing Routines, Agent Queries, and Rollercoaster POVs: Jake Maia Arlow on Her MG Debut ALMOST FLYING

By Sara Truuvert

Sweaty palms, shaking limbs, and the distinct possibility of puking. Am I describing riding a rollercoaster or having a crush in middle school? These two thrill rides collide in Jake Maia Arlow's MG debut Almost Flying.

The novel follows thirteen-year-old Dalia, who has planned the perfect summer: finally ride a rollercoaster and make a new best friend. But when Dalia's dad announces he is engaged and expects Dalia to bond with her soon-to-be stepsister, Alexa, Dalia thinks her summer plans are shot. Luckily, Alexa agrees to take Dalia and Rani, a new girl from Dalia's swim team, on an amusement park road trip. What should be a smooth week takes a turn when Dalia realizes she might have more-than-friend feelings for Rani. Almost Flying launched on June 8th, 2021 with Dial Books and is widely available to order.

Jake Maia Arlow is a writer, podcast producer (listen to her work on shows like NPR's Invisibilia), bagel connoisseur, and co-writer of a musical about a gay demon competing in a reality TV show. You can find out more about Jake on her website, Twitter, and YouTube channel. Watch for her YA debut, How To Excavate A Heart launching from HarperTeen in 2022.

Q. A huge congratulations on your MG debut! Your protagonist Dalia is thirteen, which is such a weird, wild, sometimes(?) wonderful age. Did that time in your own life influence this story?

A. Thank you so much! That time in my own life absolutely influenced this story—mostly in that I was a complete weirdo in middle school. And while I wasn’t brave enough or self-aware enough to understand my own early queer feelings, I was so deeply idiosyncratic that I could write 1,000 middle grade novels and never touch on all of my bizarre behavior. For example: I wore mismatched toe socks to school every. Single. Day. 

Q. I love how unique Dalia is—for starters, she absolutely loves watching rollercoaster POVs (but would rather keep this hobby to herself!). Would you speak a bit about developing Dalia’s character?

A. Developing her character was one of the most exciting parts of the writing process, because it involved watching a ton of rollercoaster POV videos! Part of my process included taking notes on different POV videos in Dalia’s voice—some of those early free-writes even made it into the novel in various forms. It’s hard for me to start writing before I know a character’s voice, but Dalia’s came very naturally to me. She’s an anxious queer Jew from Long Island … just like me haha!

Q. Dalia has to navigate some complicated feelings she develops for her friend Rani. Did you map out the trajectory of their relationship before you began writing? Or was it more a matter of seeing where your writing took you?

A. I knew that Dalia had a crush on Rani from the very beginning, but it took me a few rounds of edits to realize that Rani also had a crush on Dalia from the start. Dalia overthinks everything, and even though Rani gives her some pretty clear signals, she doesn’t pick up on them. It was really more of a discovery writing process than I thought it would be!

Q. Do you have any writing routines or rituals that help you get into a good workflow?

A. Oooh, I love this question! I always have rain sounds playing in the background, regardless of whether or not it’s actually raining outside. Other than that, I do the pomodoro method (25 minutes of writing with a five minute break) and I try to have a friend around so I can bounce ideas off of them! 

Q. You have a helpful (and funny) post on your website about the process of getting your agent, which, understandably, involved a fair amount of nerves and panic. What would you say to an author who feels daunted by the idea of starting this process?

A. I’m thrilled that someone has read that! My advice is always to be over prepared. I am almost chronically over prepared because of my anxiety, but in this case it served me well. Listen to podcasts, read sample query letters, read the acknowledgements of your favorite books. There are so many incredible resources that you never have to go through this alone. 

Q. Do you have any advice for young writers?

A. YES! So many people like to say “read,” which is awesome advice, and you should absolutely do that, but my other piece of advice is to WRITE! Write in a journal, write your earth-shattering novel idea on a Google Doc and share it with friends, write recipes, write spells. Write anything and everything. At the very least, you’ll have something to look back on. 

Q. Finally, I understand that both you and Dalia are bagel connoisseurs. I must know, what separates a great bagel from a good bagel?

A. This is the greatest question I’ve ever been asked. First of all, if a bagel isn’t boiled, it’s not a real bagel— it’s just a piece of bread with a hole in the center. But other than that, a great bagel is freshly made, a little warm on the inside; it’s chewy on the outside and soft on the inside. And, most importantly, a great bagel is one that you eat with friends and family. 

------------------------------------------------------------------

Sara Truuvert completed her MLitt in Creative Writing at the University of St Andrews. She also holds a Certificate in Creative Writing from the Humber School for Writers and a BA in English, Drama, and the History and Philosophy of Science from the University of Toronto. Her work has appeared in the Literary Review of Canada among other publications.

For more interviews, see the Inkygirl Interview Archive. Also see Advice For Young Writers and Illustrators, a compilation of tips generously offered by children's book creators Inkygirl.com has interviewed over the years.





vs

Kaputter US-Journalismus, Streit um § 353d StGB, Grönemeyer vs. CDU

1. “Wir müssen uns von der Vorstellung lösen, dass Journalismus gleichbedeutend mit Content ist” (journalist.de, Leif Kramp & Stephan Weichert) Bei journalist.de ist ein lesenswertes Interview mit dem US-amerikanischen Journalismus-Experten Jeff Jarvis erschienen, der gleich in der ersten Antwort ziemlich direkt wird: “Während wir die US-Wahlen durchlaufen, frage ich mich, ob es Zeit ist, den […]



  • 6 vor 9

vs

Author of new Stevie Nicks book is a Princeton professor who loves 'Tusk,' studies Tchaikovsky

Simon Morrison, author of the new musical biography "Mirror in the Sky,” is a professor of music and Slavic languages and literatures, and a sought-after lecturer in the humanities.




vs

Men's Ice Hockey vs Ohio State

Men's Ice Hockey vs Ohio State




vs

Men's Ice Hockey vs Ohio State

Men's Ice Hockey vs Ohio State




vs

Men's Basketball vs Nazareth

Men's Basketball vs Nazareth




vs

Women's Ice Hockey vs Cornell

Women's Ice Hockey vs Cornell




vs

M/W Squash vs Drexel

M/W Squash vs Drexel




vs

Football vs Penn

Football vs Penn




vs

Women's Ice Hockey vs Colgate

Women's Ice Hockey vs Colgate




vs

Men's Squash vs Navy

Men's Squash vs Navy




vs

Men's Basketball vs Loyola Chicago

Men's Basketball vs Loyola Chicago




vs

Women's Basketball vs Villanova

Women's Basketball vs Villanova




vs

Swedish vs. Deep Tissue – Which Massage Will Leave You More Bruised?

Imagine slipping into a tranquil space, the soft aroma of essential oils filling the air, as the world outside slowly fades away. For many, this is the sanctuary sought after a long week of work or dealing with chronic pain. In that moment, whether it’s the gentle caress of a Swedish massage or the deep ... Read more

The post Swedish vs. Deep Tissue – Which Massage Will Leave You More Bruised? appeared first on Star Two.




vs

In this school’s election, it’s pizza vs. chicken nuggets, with democracy as the winner

At an Arizona tribal school, it's a fierce campaign to pick the top school lunch, as students learn about making their voice count