14 C
New York
Wednesday, March 19, 2025
Home Blog Page 3783

Now in Android #108. Android 15 Beta 3, two Compose case… | by Ash Nohe | Android Builders | Jun, 2024


Android 15 Beta 3 is launched, taking Android 15 to Platform Stability. This implies the developer APIs and all app-facing behaviors are closing so that you can overview. Additionally, Apps focusing on Android 15 could be revealed in Google Play.

The Beta 3 put up highlights how customers will have the ability to sign-into apps that concentrate on Android 15 utilizing passkeys in a single step with facial recognition, fingerprint, or display lock.

The put up additionally covers how the WebSettings DatabaseEnabled getter and setter, which was used for WebSQL inside a WebView, is deprecated. The World Broad Internet Consortium encourages apps needing internet databases to as an alternative undertake Internet Storage API applied sciences like IndexedDB.

Tomáš discusses how Max applied UI modifications 30% sooner with Jetpack Compose by lowering boilerplate code, growing the re-usability of UI components, and boosting total developer productiveness.

Chris discusses how the pattern Jetcaster app was enhanced to help further type components. He emphasizes code sharing whereas including help for Tablets, Desktops, Foldables, TV, Put on OS, and Widgets.

Robbie highlights a number of apps from Australia which can be enhancing lives as a part of #WeArePlay. One app helps folks throughout pure disasters, one other promotes wellbeing via houseplants.

Paris wrote about profitable experiments with Android improvement in Google AI Studio involving turning designs into code, fixing UI, and prompting so as to add new options.

On episode 207: “AI improvement help”, Tor and Romain invite Kathy from Google’s AI Developer Help workforce to debate integrating Gemini in Android Studio. You’ll hear inside details about fine-tuning the mannequin for Android, together with how Gemini retrieves data from the web that’s not within the coaching knowledge to complement its capabilities. Additionally they focus on future AI prospects, like offering personalization primarily based off of the customers codebase and writing edge check instances.

Take heed to it in podcast or video format.

Nick recaps the highest three I/O bulletins from Google Play together with enhanced retailer listings, expanded cost choices, and SDK Console enhancements.

At Google I/O Yigit advises builders to begin experimenting with Kotlin Multiplatform.

And Zarah shares why they’re excited for shared aspect transitions and screenshot testing.

There have been loads of steady releases.

Look 1.1.0 provides unit testing help and extra elements for constructing foundational UI components to your homescreen widgets.

Fragment 1.8.0 consists of AndroidFragment — an API for embedding Fragments in Compose.

When you’re seeing ‘LocalLifecycleOwner not current’ when utilizing Compose, strive upgrading Lifecycle to Lifecycle 2.8.2, which you need to use with any model of Compose with out workarounds.

A number of testing libraries are steady, together with Core-ktx 1.6.0, Espresso 3.6.0, Espresso System 1.0.0, JUnit Extensions 1.2.0, Fact Extensions 1.6.0, Monitor 1.7.0, Orchestrator 1.5.0, Runner 1.6.0, Guidelines 1.6.0 and Companies 1.5.0.

A number of different steady releases dropped, together with Digital camera 1.3.4, Compose Animation 1.6.8, Compose Basis 1.6.8, Compose Materials 1.6.8, Compose Runtime 1.6.8, Compose UI 1.6.8, Concurrent 1.2.0, Core-RemoteViews 1.1.0, Video games-Controller 2.0.2.

That’s it for this week with Android 15 Beta 3, two Compose case research, Google AI Studio, Gemini in Android Studio, and plenty of steady AndroidX releases.

Test again quickly to your subsequent replace from the Android developer universe! 💫

Check-Driving HTML Templates


foo

Let’s have a look at how one can do it in phases: we begin with the next take a look at that
tries to compile the template. In Go we use the usual html/template package deal.

Go

  func Test_wellFormedHtml(t *testing.T) {
    templ := template.Should(template.ParseFiles("index.tmpl"))
    _ = templ
  }

In Java, we use jmustache
as a result of it is quite simple to make use of; Freemarker or
Velocity are different widespread decisions.

Java

  @Check
  void indexIsSoundHtml() {
      var template = Mustache.compiler().compile(
              new InputStreamReader(
                      getClass().getResourceAsStream("/index.tmpl")));
  }

If we run this take a look at, it’s going to fail, as a result of the index.tmpl file does
not exist. So we create it, with the above damaged HTML. Now the take a look at ought to move.

Then we create a mannequin for the template to make use of. The applying manages a todo-list, and
we will create a minimal mannequin for demonstration functions.

Go

  func Test_wellFormedHtml(t *testing.T) {
    templ := template.Should(template.ParseFiles("index.tmpl"))
    mannequin := todo.NewList()
    _ = templ
    _ = mannequin
  }

Java

  @Check
  void indexIsSoundHtml() {
      var template = Mustache.compiler().compile(
              new InputStreamReader(
                      getClass().getResourceAsStream("/index.tmpl")));
      var mannequin = new TodoList();
  }

Now we render the template, saving the ends in a bytes buffer (Go) or as a String (Java).

Go

  func Test_wellFormedHtml(t *testing.T) {
    templ := template.Should(template.ParseFiles("index.tmpl"))
    mannequin := todo.NewList()
    var buf bytes.Buffer
    err := templ.Execute(&buf, mannequin)
    if err != nil {
      panic(err)
    }
  }

Java

  @Check
  void indexIsSoundHtml() {
      var template = Mustache.compiler().compile(
              new InputStreamReader(
                      getClass().getResourceAsStream("/index.tmpl")));
      var mannequin = new TodoList();
  
      var html = template.execute(mannequin);
  }

At this level, we wish to parse the HTML and we anticipate to see an
error, as a result of in our damaged HTML there’s a div factor that
is closed by a p factor. There may be an HTML parser within the Go
customary library, however it’s too lenient: if we run it on our damaged HTML, we do not get an
error. Fortunately, the Go customary library additionally has an XML parser that may be
configured to parse HTML (because of this Stack Overflow reply)

Go

  func Test_wellFormedHtml(t *testing.T) {
    templ := template.Should(template.ParseFiles("index.tmpl"))
    mannequin := todo.NewList()
    
    // render the template right into a buffer
    var buf bytes.Buffer
    err := templ.Execute(&buf, mannequin)
    if err != nil {
      panic(err)
    }
  
    // test that the template will be parsed as (lenient) XML
    decoder := xml.NewDecoder(bytes.NewReader(buf.Bytes()))
    decoder.Strict = false
    decoder.AutoClose = xml.HTMLAutoClose
    decoder.Entity = xml.HTMLEntity
    for {
      _, err := decoder.Token()
      swap err {
      case io.EOF:
        return // We're carried out, it is legitimate!
      case nil:
        // do nothing
      default:
        t.Fatalf("Error parsing html: %s", err)
      }
    }
  }

supply

This code configures the HTML parser to have the appropriate stage of leniency
for HTML, after which parses the HTML token by token. Certainly, we see the error
message we needed:

--- FAIL: Test_wellFormedHtml (0.00s)
    index_template_test.go:61: Error parsing html: XML syntax error on line 4: surprising finish factor 

In Java, a flexible library to make use of is jsoup:

Java

  @Check
  void indexIsSoundHtml() {
      var template = Mustache.compiler().compile(
              new InputStreamReader(
                      getClass().getResourceAsStream("/index.tmpl")));
      var mannequin = new TodoList();
  
      var html = template.execute(mannequin);
  
      var parser = Parser.htmlParser().setTrackErrors(10);
      Jsoup.parse(html, "", parser);
      assertThat(parser.getErrors()).isEmpty();
  }

supply

And we see it fail:

java.lang.AssertionError: 
Anticipating empty however was:<[<1:13>: Unexpected EndTag token [] when in state [InBody],

Success! Now if we copy over the contents of the TodoMVC
template
to our index.tmpl file, the take a look at passes.

The take a look at, nonetheless, is simply too verbose: we extract two helper features, in
order to make the intention of the take a look at clearer, and we get

Go

  func Test_wellFormedHtml(t *testing.T) {
    mannequin := todo.NewList()
  
    buf := renderTemplate("index.tmpl", mannequin)
  
    assertWellFormedHtml(t, buf)
  }

supply

Java

  @Check
  void indexIsSoundHtml() {
      var mannequin = new TodoList();
  
      var html = renderTemplate("/index.tmpl", mannequin);
  
      assertSoundHtml(html);
  }

supply

Degree 2: testing HTML construction

What else ought to we take a look at?

We all know that the appears of a web page can solely be examined, finally, by a
human taking a look at how it’s rendered in a browser. Nevertheless, there’s usually
logic in templates, and we wish to have the ability to take a look at that logic.

One is likely to be tempted to check the rendered HTML with string equality,
however this system fails in apply, as a result of templates comprise quite a lot of
particulars that make string equality assertions impractical. The assertions
develop into very verbose, and when studying the assertion, it turns into tough
to know what it’s that we’re making an attempt to show.

What we want
is a method to say that some components of the rendered HTML
correspond to what we anticipate, and to ignore all the main points we do not
care about.
A method to do that is by operating queries with the CSS selector language:
it’s a highly effective language that permits us to pick out the
parts that we care about from the entire HTML doc. As soon as we’ve got
chosen these parts, we (1) depend that the variety of factor returned
is what we anticipate, and (2) that they comprise the textual content or different content material
that we anticipate.

The UI that we’re imagined to generate appears like this:

Check-Driving HTML Templates

There are a number of particulars which can be rendered dynamically:

  1. The variety of objects and their textual content content material change, clearly
  2. The type of the todo-item adjustments when it is accomplished (e.g., the
    second)
  3. The “2 objects left” textual content will change with the variety of non-completed
    objects
  4. One of many three buttons “All”, “Energetic”, “Accomplished” can be
    highlighted, relying on the present url; for example if we determine that the
    url that reveals solely the “Energetic” objects is /lively, then when the present url
    is /lively, the “Energetic” button must be surrounded by a skinny purple
    rectangle
  5. The “Clear accomplished” button ought to solely be seen if any merchandise is
    accomplished

Every of this issues will be examined with the assistance of CSS selectors.

This can be a snippet from the TodoMVC template (barely simplified). I
haven’t but added the dynamic bits, so what we see right here is static
content material, supplied for instance:

index.tmpl

  

supply

Kolmogorov-Arnold Networks: The New Frontier in Environment friendly and Interpretable Neural Networks


Neural networks have been on the forefront of AI developments, enabling every little thing from pure language processing and laptop imaginative and prescient to strategic gameplay, healthcare, coding, artwork and even self-driving automobiles. Nonetheless, as these fashions increase in dimension and complexity, their limitations have gotten vital drawbacks. The calls for for huge quantities of knowledge and computational energy not solely make them expensive but additionally increase sustainability issues. Furthermore, their opaque, black-box nature hinders interpretability, a essential issue for wider adoption in delicate fields. In response to those rising challenges, Kolmogorov-Arnold Networks are rising as a promising various, providing a extra environment friendly and interpretable resolution that might redefine the way forward for AI.

On this article, we’ll take a better take a look at Kolmogorov-Arnold Networks (KANs) and the way they’re making neural networks extra environment friendly and interpretable. However earlier than we dive into KANs, it’s important to first perceive the construction of multi-layer perceptrons (MLPs) in order that we are able to clearly see how KANs differentiate themselves from conventional approaches.

Understanding Multi-Layered Perceptron (MLP)

Multi-layer perceptrons (MLPs), also called totally related feedforward neural networks, are elementary to the structure of contemporary AI fashions. They include layers of nodes, or “neurons,” the place every node in a single layer is related to each node within the subsequent layer. The construction sometimes contains an enter layer, a number of hidden layers, and an output layer. Every connection between nodes has an related weight, figuring out the power of the connection. Every node (besides these within the enter layer) applies a hard and fast activation operate to the sum of its weighted inputs to provide an output. This course of permits MLPs to be taught advanced patterns in knowledge by adjusting the weights throughout coaching, making them highly effective instruments for a variety of duties in machine studying.

Introducing Kolmogorov-Arnold Networks (KANs)

Kolmogorov-Arnold Networks are a brand new sort of neural networks making a major shift in how we design neural networks. They’re impressed by Kolmogorov-Arnold illustration theorem, a mid-Twentieth century mathematical idea developed by famend mathematicians Andrey Kolmogorov and Vladimir Arnold. Like MLPs, KANs have a completely related construction. Nonetheless, not like MLPs, which use mounted activation features at every node, KANs make the most of adjustable features on the connections between nodes. Which means relatively than merely studying the power of the connection between two nodes, KANs be taught all the operate that maps enter to output. The operate in KANs isn’t mounted; it may be extra advanced—probably a spline or a mix of features—and varies for every connection. A key distinction between MLPs and KANs lies in how they course of indicators: MLPs first sum the incoming indicators after which apply non-linearity, whereas KANs first apply non-linearity to the incoming indicators earlier than summing them. This strategy makes KANs extra versatile and environment friendly, usually requiring fewer parameters to carry out related duties.

Why KANs are extra Environment friendly than MLPs

MLPs observe a hard and fast strategy to rework enter indicators into outputs. Whereas this methodology is simple, it usually requires a bigger community—extra nodes and connections—to deal with the complexities and variations in knowledge. To visualise this, think about fixing a puzzle with items of a hard and fast form. If the items do not match completely, you want extra of them to finish the image, resulting in a bigger, extra advanced puzzle.

Alternatively, Kolmogorov-Arnold Networks (KANs) supply a extra adaptable processing construction. As a substitute of utilizing mounted activation features, KANs make use of adjustable features that may change themselves to the particular nature of the info. To place it within the context of the puzzle instance, consider KANs as a puzzle the place the items can adapt their form to suit completely into any hole. This flexibility means KANs can work with smaller computation graphs and fewer parameters, making them extra environment friendly. For instance, a 2-layer width-10 KAN can obtain higher accuracy and parameter effectivity in comparison with a 4-layer width-100 MLP. By studying features on the connections between nodes relatively than counting on mounted features, KANs reveal superior efficiency whereas protecting the mannequin easier and cheaper.

Why KANs are Extra Interpretable than MLPs

Conventional MLPs create intricate layers of relationships between incoming indicators, which might obscure how selections are made, significantly when dealing with giant volumes of knowledge. This complexity makes it troublesome to hint and perceive the decision-making course of. In distinction, Kolmogorov-Arnold Networks (KANs) supply a extra clear strategy by simplifying the mixing of indicators, making it simpler to visualise how they’re mixed and contribute to the ultimate output.

KANs make it simpler to visualise how indicators are mixed and contribute to the output. Researchers can simplify the mannequin by eradicating weak connections and utilizing easier activation features. This strategy can generally lead to a concise, intuitive operate that captures the KAN’s total habits and, in some circumstances, even reconstructs the underlying operate that generated the info. This inherent simplicity and readability make KANs extra interpretable in comparison with conventional MLPs.

Potential of KANs for Scientific Discoveries

Whereas MLPs have made vital advances in scientific discovery, resembling predicting protein buildings, forecasting climate and disasters, and aiding in drug and materials discovery, their black-box nature leaves the underlying legal guidelines of those processes shrouded in thriller. In distinction, the interpretable structure of KANs has the potential to disclose the hidden mechanisms that govern these advanced programs, offering deeper insights into the pure world. A few of the potential use circumstances of KANs for scientific discoveries are:

  • Physics: Researchers have examined KANs on primary physics duties by producing datasets from easy bodily legal guidelines and utilizing KANs to foretell these underlying ideas. The outcomes reveal KANs’ potential to uncover and mannequin elementary bodily legal guidelines, revealing new theories or validating present ones by their means to be taught advanced knowledge relationships.
  • Biology and Genomics: KANs can be utilized to uncover the advanced relationships between genes, proteins, and organic features. Their interpretability additionally affords researchers the flexibility to hint gene-trait connections, opening new avenues for understanding gene regulation and expression.
  • Local weather Science: Local weather modeling includes the simulation of extremely advanced programs which are influenced by many interacting variables, resembling temperature, atmospheric strain, and ocean currents. KANs might improve the accuracy of local weather fashions by effectively capturing these interactions with out the necessity for excessively giant fashions.
  • Chemistry and Drug Discovery: In chemistry, significantly within the area of drug discovery, KANs might be utilized to mannequin chemical reactions and predict the properties of recent compounds. KANs might streamline the drug discovery course of by studying the intricate relationships between chemical buildings and their organic results, probably figuring out new drug candidates extra rapidly and with fewer sources.
  • Astrophysics: Astrophysics offers with knowledge that’s not solely huge but additionally advanced, usually requiring refined fashions to simulate phenomena like galaxy formation, black holes, or cosmic radiation. KANs might assist astrophysicists mannequin these phenomena extra effectively by capturing the important relationships with fewer parameters. This might result in extra correct simulations and assist uncover new astrophysical ideas.
  • Economics and Social Sciences: In economics and social sciences, KANs might be helpful for modeling advanced programs like monetary markets or social networks. Conventional fashions usually simplify these interactions, which might result in much less correct predictions. KANs, with their means to seize extra detailed relationships, would possibly assist researchers higher perceive market tendencies, coverage impacts, or social behaviors.

The Challenges of KANs

Whereas KANs current a promising development in neural community design, they arrive with their very own set of challenges. The pliability of KANs, which permits for adjustable features on connections relatively than mounted activation features, could make the design and coaching processes extra advanced. This added complexity can result in longer coaching instances and should require extra superior computational sources, which might diminish among the effectivity advantages. That is primarily as a result of, presently the KANs aren’t designed to benefit from GPUs. The sector remains to be comparatively new, and there aren’t but standardized instruments or frameworks for KANs, which might make them tougher for researchers and practitioners to undertake in comparison with extra established strategies. These points spotlight the necessity for ongoing analysis and improvement to handle the sensible hurdles and totally leverage some great benefits of KANs.

The Backside Line

Kolmogorov-Arnold Networks (KANs) supply a major development in neural community design, addressing the inefficiencies and interpretability problems with conventional fashions like multi-layer perceptrons (MLPs). With their adaptable features and clearer knowledge processing, KANs promise larger effectivity and transparency, which might be transformative for scientific analysis and sensible functions. Whereas nonetheless within the early phases and dealing with challenges resembling advanced design and restricted computational assist, KANs maintain the potential to reshape how we strategy AI and its use in numerous fields. Because the expertise matures, it could present beneficial insights and enhancements throughout many domains.

Robots-Weblog | Serviceroboter bringt Drink direkt aufs Zimmer

0


Die Münchener Robotise Applied sciences GmbH realisiert autonomen Roboterkellner mit platzsparenden Energieketten von igus

Köln, 11. Juli 2024 – Nach einem langen Tag am Strand das Hotelzimmer genießen, mit einem Drink aus der guten alten Minibar. Das sieht in einigen Motels schon anders aus. Dort klingelt zur Überraschung der Gäste stattdessen JEEVES an der Tür – ein Roboter des Münchener Unternehmens Robotise Applied sciences GmbH. Der kellnernde Serviceroboter ersetzt bis zu 300 Minibars und entlastet Motels in Zeiten des Fachkräftemangels. Damit er seinem Job ohne Störungen nachgehen kann, vertrauen die Ingenieure bei der Führung der sensiblen Energie- und Datenleitungen auf platzsparende und ausfallsichere Energieketten von igus.

Bei Durst oder Starvation genügt ein Anruf mit dem Zimmertelefon oder eine Nachricht through App, um JEEVES, der optisch an R2D2 aus Star Wars erinnert, zu aktivieren. Der 124 cm hohe und 100 kg schwere Serviceroboter, ausgestattet mit Lasersystem, 3D-Kamera und Abstandssensoren, fährt dann autonom zum Zimmer des Gastes, sogar mit dem Fahrstuhl. Am Zimmer angekommen macht JEEVES per Telefonanruf oder App-Benachrichtigung auf sich aufmerksam. Der Gast öffnet die Tür, wählt und bezahlt über ein großes Touchdisplay sein Produkt – etwa ein kühles Bier, einen Energydrink oder eine Packung Erdnüsse. Daraufhin öffnet sich automatisch eine der vier Schubladen und gibt das gewählte Produkt frei. Nur eine technische Spielerei? Viel mehr als das, ist die Robotise Applied sciences GmbH überzeugt. Motels können sich mit nur einem Roboter das Auffüllen und Säubern von 300 Minibars ersparen und gleichzeitig die Energie für die kleinen Kühlschränke von der Stromrechnung streichen. Davon profitieren könnten in Zukunft auch Messen, Kantinen, Büros, Flughäfen, Museen und Eating places.

Eine Achillesferse des Roboters: die Führung von Energie- und Datenleitungen
JEEVES demonstriert eindrucksvoll, wie die Automatisierung immer weiter in das Leben der Menschen Einzug hält. Diese Entwicklung setzt jedoch technische Zuverlässigkeit voraus. „Ein defekter Roboterkellner würde sofort den Unmut der Gäste auf sich ziehen“, erklärt Clemens Beckmann, Head of Engineering bei Robotise Applied sciences. „Deshalb haben wir großen Wert daraufgelegt, JEEVES so zuverlässig wie möglich zu konstruieren.“ Eine typische Achillesferse battle dabei die Führung der Leitungen im Inneren des Roboters, die für den Switch von Energie und Daten zuständig sind – etwa zu den Sensoren in den ausfahrbaren Fächern, mit denen der Roboter eingelegte und entnommene Produkte erkennen kann. Schnell könnte es passieren, dass die Leitungen zu stark gebogen werden und brechen oder an der Kühlplatte des Kühlschranks festfrieren. „Um dies zu verhindern und eine kontrollierte sowie ausfallsichere Bewegung der Leitungen mit einem fest definiertem Biegeradius zu gewährleisten, entschieden wir uns für Energieketten der Serie E2.10 von igus“, so Beckmann.

e-ketten von igus sorgen für maximalen Stauraum und Ruhe
Die Serie E2.10 von igus überzeugte den Ingenieur vor allem durch ihre platzsparende Bauweise, die viel Stauraum für die Produkte schafft. Die e-ketten, die Energie- und Datenleitungen sicher aufnehmen, sind über den Führungsschienen der Schubladen montiert, haben eine Innenbreite von 18 mm, eine Innenhöhe von 10 mm und einen Biegeradius von nur 28 mm. Damit sind die e-ketten, laut der Robotise Applied sciences GmbH, die kompakteste Lösung, die auf dem Markt zu finden battle. Darüber hinaus punkten sie mit hoher Ausfallsicherheit und Langlebigkeit, da sie aus einem Hochleistungskunststoff bestehen, der hohe Beständigkeit gegen Verschleiß und Abrieb bietet und für den Einsatz in einem breiten Temperaturbereich geeignet ist. Diese Robustheit reduziert die Wahrscheinlichkeit von Serviceeinsätzen, was sich positiv auf die Wirtschaftlichkeit des Roboters auswirke, der europaweit zum Einsatz kommen soll. Zudem bewegen sich die Kettenglieder besonders geräuscharm, sodass die Leitungsführung beim Öffnen und Schließen der Produktfächer keine störenden Geräusche verursacht.

Bleibt abschließend nur noch eine Frage: Warum heißt der Roboter JEEVES? Die Antwort: JEEVES ist eine ikonische Figur aus den Romanen des englischen Autors P.G. Wodehouse. Er ist der Diener der Romanfigur Bertie Wooster und steht für besten und diskretesten Service.



Actual-time sulfotransferase assay | Ferniglab Weblog


Actual-time sulfotransferase assay

Extra sulfation

Earlier this yr Simon Wheeler (who now has a nicely deserved substantive place, congratulations!) and Steve Butler printed the first output from the BBSRC TDRI awarded to Steve, with myself and Ed Yates in supporting roles. It’s all the time good to collaborate with actual chemists, because it jogs my memory I’m very a lot a pseudo chemist, and I study so much. After what I might think about a fairly heroic effort on the synthesis entrance, Simon and Steve pulled out a really helpful sensor, based mostly on a europium complicated. The Eu sensor has good selectivity for PAP over PAPS, the common sulfate donor. The assay works nicely and could be very amenable to excessive throughput 384 nicely format assays (= extra papers on the way in which). So we are able to now measure sulfotransferase exercise in realt-ime independently of the acceptor for just about any enzyme-substrate mixture. This represents an necessary software for the broader sulfotransferase neighborhood. 

The paper additionally demonstrates the significance of social media in science, as a method to entry in a non-direct method new data that units off an modern venture. I noticed tweet from @Fieldlab highlighting a paper from Steve’s lab on lanthanide sensors capable of discriminate nucleotide phosphates and skim the paper. Naively I assumed PAP/PAPS sensing utilizing such compounds must be straightforward, so I contacted Steve. After some preliminary exams with PAP and PAPS on his aspect, we wrote the grant – one other lesson right here, as the appliance neared remaining from I went over to Loughborough for a gathering, which allowed us to iron out a couple of issues much more successfully than by digital communication. The work was, as hinted above, removed from easy, however like every little thing that’s new, very rewarding and continues to be so.

I’ve simply moved from the hen web site to the proboscidean one and issues seem like there shall be much more of such ‘random entry’ of knowledge there, so let’s see what turns up!