The beauty of treemap

One of my main takeaway of the book study group I organised within Coders Only was the simplicity of the treemap function, which takes a tree and a function as an input, and returns a new tree, where all the nodes are the result of inputting the original node through the function.

Note to myself: use recursion when parsing through a tree.

  • Trees are beautiful and the way to deal with two-dimensional data
(define (treemap fn tree)
  (cond ((null? tree) '())
    ((leaf? tree) (fn tree))
    (else (map (lambda (t) (treemap fn t)) tree)) ))

Note: the map function takes a function and a list, applies the function to all the elements, and returns a new modified list.

Don’t trade simplicity for convenience

The following excerpt from the preface to The Go Programming Language from Alan A. A. Donovan and Brian W. Kernighan introduced the idea of a pernicious change – a change that trades simplicity for its shallow cousin, convenience.

I love the term ‘shallow cousin’.

From a distance, an increase in convenience is a good thing, right? Time and time again, across the last 25 years, I have seen the pattern of the ‘convenience wrapper’ be implemented and then brutally failing.

The convenience wrapper:

  • makes easy things trivial and complicated things impossible
  • must itself be maintained, so now you have two sources of complexity, the original code that you wanted to encapsulate, plus the wrapper.
  • grows with time. The more it is used, the more functionality is packed into the convenience wrapper, until you have exactly the same power as the bit you wanted to encapsulate – and exactly the same problems as before.

So, as a reminder to myself – ask yourself ‘is this adding convenience or creating simplicity?’

As Rob Pike put it, “complexity is multiplicative”: fixing a problem by making one part of the system more complex slowly but surely adds complexity to other parts. With constant pressure to add features and options and configurations, and to ship code quickly, it’s easy to neglect simplicity, even though in the long run simplicity is the key to good software.

Simplicity requires more work at the beginning of a project to reduce an idea to its essence and more discipline over the lifetime of a project to distinguish good changes from bad or pernicious ones. With sufficient effort, a good change can be accommodated without compromising what Fred Brooks called the “conceptual integrity” of the design but a bad change cannot, and pernicious change trades simplicity for its shallow cousin, convenience. Only through simplicity of design can a system remain stable, secure, and coherent as it grows.

Meeting Alistair Cockburn in person

Our Zürich community of developers was graced by the visit of Alistair Cockburn, co-author of the Agile Manifesto, one of the “42 Greatest Software Professionals of All Times.”

Alistair answered our questions with the constraint of having to answer them as #stories.

Some insights that we noted were:

💡 the Agility concept really boils down to the dictionary definition of being able to #change direction quickly.
💡 this can be used not only in small software development teams but also across organisations.
💡 The more conservative and hierarchical a company or country is, the less amenable it is to pivot to an agile methodology.
💡 A very good litmus test for conservativeness is: ‘Can you bring your boss bad news?’. Norway scored well by that measure, Japan, not so well.

He recommended his recent book, #hexagonal architecture explained, and his latest refinement on the agile methodology, the heart of #Agile.

So long – The Swiss Notes User Group (SNoUG) says goodbye

Founded in May 1993, the Swiss Notes User Group was one of the oldest user groups focused on the Notes, Domino, Sametime and Connection products. It is with a heavy heart that we are now shutting down the association with all its related activities. We would like to invite you, our members, to a last beer after the summer holidays to reminisce and say goodbye.

How did we reach this decision?

Our yearly event was the centerpiece of the user group. Meeting the makers and shakers of the local market, exchanging experiences, to be informed about news and trends, maintaining contacts – SNoUG events were a meeting point for users, business partners and manufacturers. In recent years, however, interest in our events gradually but steadily declined. Fewer and fewer participants came to our annual conferences, and tellingly, the proportion of customers declined strongly. The COVID pandemic was the final nail in the coffin – and we have noticed a general decline in the attractivity of ‘in real life’ events, not just SNoUG. This is a shame as there is more activity nowadays in SNoUG-relevant products than there has been for years since the takeover by HCL.

In view of the already existing online options, we did not consider building up an online event as an alternative, not least because of the costs involved. In the absence of a real perspective, we have therefore decided to dissolve the SNoUG association.

We would like to express our sincere thanks to all those who have made our SNoUG possible and supported it over so many years. Special thanks go of course to IBM and HCL, both have always generously supported SNoUG as sponsors. We would also like to thank the numerous business partners from Germany and abroad who have enriched our events with their active participation. Finally, we would also like to thank the many speakers who have repeatedly come to our events and shared their profound knowledge with us in their presentations.

What can SNoUG members do now?

We did not want to leave our members out in the cold and have sought contact with our German sister organization, DNUG and reached what we think is an interesting agreement:

Every SNoUG member can be a DNUG member free of charge until the end of 2023 and thus benefit from DNUG’s wide range of services at attractive conditions.

Simply register on the following page and mention *SNoUG Mitglied* under *Besonderheiten bei der Rechnungsstellung*:

Become a DNUG member

If you do not know DNUG, you are welcome to subscribe to the free monthly newsletter, which is currently sent to about 1,000 recipients:

Subscribe to DNUG newsletter

We would also like to draw your attention to the upcoming conference in Konstanz, for which the early bird discount is still available until April 15. If you are quick, you can participate, as a current SNoUG-member, to this 2-day event for 75 EUR:

#dachnug49 in Konstanz

Goodbye beer

We don’t want to quietly disappear from the scene. The location is not yet decided, but we will invite you to a “last beer” after the summer vacations where we can once again chat about the good old days and the products and solutions that have accompanied us over so many years.

Domino Keep, an modern API for Domino

OpenNTF organised a webinar in July 2021 showcasing Domino Keep which we had the pleasure of attending.

Many of the improvements that HCL brought to the Domino/Notes stack has “catching up”: mostly self-evident improvements from accumulated feedback from domino developers.

These improvements, though, have until now been unable to break the “yellow bubble”: Companies still needs extremely specialized developers and admins if they want to change anything or create anything in their Domino infrastructure.

Modern (and by that we mean young) developers have several frustrating hurdles to cross before they can be productive with Domino. The architecture is alien and monolithic. Having to install a Windows machine is an annoyance, but having to use the slow, Eclipse-bloated monstrosity that is Domino Designer, learning which of the many windows contain the setting you want to change is a pain.

Domino Keep tries to remedy this by presenting an external API that is familiar and follows modern standards. Thankfully HCL assigned two of the smartest Domino gurus that we know of, Paul Withers (who is famous for re-writing the lotus.domino package so that we developers could write modern Java in our Domino applications) and Stephan Wissel (whom we had the pleasure of welcoming at our last SNoUG event in 2019), to the task.

Familiarity:

  • output data is always in JSON format
  • Domino Designer installation is not necessary! Possibly the biggest hurdle.
  • the public API is based on OpenAPI 3.0
    • This means that it comes with a fully interactive auto-documentation
    • The interface uses REST Api conventions, for instance an aclEntry is accessed with /acl/entries/{aclEntryName}
  • since all the calls are REST Calls, you can use the command line, or something like Postman, or even do complex testing with Node RED (recommended)

Security:

  • Keep keeps (pun intended) the tried-and-tested security ideas of Notes Domino and won’t let you override settings in the ACLs.
  • Keep uses the modern JWT (JSON Web Tokens) techology for its authentication and authorization – this will be familiar to modern developers.
  • Keep is secure by default, which means that without configuration (done on a configuration database, KeepConfig.nsf on your server), no access is granted.

Running Agents:

You can trigger Agents on your database with a REST call! This is a sine qua non for being able to reuse your business logic, which often is present in the form of back-end agents which perform regular updates on your document.

Not only data but design elements too:

Previous APIs allowed read/write access to data via REST, but Keep also allows you access to the design data. This means that you can create a database, create a view, create a form, with a simple REST call. In practice HCL has added a layer on top of the DXL representation of Domino design elements, which means that you are limited by DXL’s own limitations, i.e. certain details will not be able to round-trip.

This is one of the more seducing points; with an easy way to create a persistent layer for your application, you are effectively inviting modern developers to create new domino databases, not just read data from existing ones.

The ACLs are also open to modification, so you can control access with the usual Domino granularity without having to go into the Domino Administration client.

Conclusion

All in all we’re impressed by the implementation of Keep, it’s modern, familiar for non-notes developers, standards-compliant and is very good at completely hiding the domino-specific technology for newcomers.

This can effectively open up the pool of developers that can do work on your domino infrastructure from a couple of grizzled old hands to any new developer in your team.

As such, we would recommend you to install it prophylactically on your server so that it is already up and running.

Links

Documentation:

https://opensource.hcltechsw.com/domino-keep-docs/

webinar recording :

webinar slides:

Digital Privacy is not only a private decision – it affects us all

It’s time to walk away from WhatsApp and Facebook

Digital privacy is a public issue

In much the same way that vaccination against COVID-19 is not only a private measure, but also a public health one, ensuring your digital privacy affects the community at large.

The Cambridge Analyitica scandal in 2016 showed that your personal data is used by political parties to target political advertisements chillingly accurately. By participating in the Facebook ecosystem, you actively enable third parties to effectively manipulate elections.

Another good example of what happens when accurate data about political persuasion is available to political parties is the abuse of gerrymandering in US politics.

Informed decision making is completely destroyed by ‘information bubbles’

One of the basic tenets of our democratic systems is that people have access to unbiased information with which they can make an informed decision about which way to vote.

As the film The social dilemma aptly demonstrates, through the use of very clever machine learning algorithms, almost every social media app tries to continuously improve its attractiveness, tries to make you stay longer on the screen – for instance, the ellipsis displayed when someone is typing an answer to a message from you makes you stay longer on the phone and wait for the answer.

These algorithms are not per se bent on misinforming you, but the sad truth is that we humans are more fascinated by scandal and outrage, rather than plain old boring truth.

So, if you follow a feed of information that has been devised by a KI trying to increase your time spent on screen (such as the next recommended film in YouTube, or your Twitter feed, or your Facebook feed), this feed will much more likely include outrageous lies, rather than plain old boring truths.

This is a new phenomenon, and we haven’t yet worked out how to minimize the polarizing effects it has on political opinion.

Thankfully in Europe we have public information networks, paid by taxpayer money, who have the mandate to tell the truth, but in countries where all media is private, you can see this effect too, as sensationalist outrage is actually the main product, and where some networks actually argue in court that their programmes are for entertainment, not for information.

The US has effectively polarized itself into a split society, where both halves sincerely believe the other half is an existential threat, and the two halves cannot even agree on what is a fact. This is a recipe for disaster.

So, if we want to maintain our democratic system, we have to wean ourselves off social media feeds that are optimized for attention.

By using WhatsApp you give Facebook your friend’s personal information, not only yours

While it is true that the actual content of your conversations is encrypted, the metadata is available to Facebook. By using WhatsApp, you essentially agree to transfer your personal address book to Facebook. So you transfer personal information about your friends to Facebook, not only information about yourself. This clearly breaches data protection laws, theoretically you should have asked every single person in your address book if they agree to have their personal data sent to Facebook.

Admittedly, it is possible to use WhatsApp without giving the app access to your contacts, but that means all you see is phone numbers.

Have a look at the data that is collected by the WhatsApp and Facebook Messenger application when installed on your phone. Does that really look like a legitimate use?

What steps can you do to improve your digital privacy?

The main offenders in my eyes are Facebook and Google:

  • Delete your WhatsApp account, and your Facebook account
  • Use DuckDuckGo as a search engine instead of Google
  • Use Here instead of Google Maps

What steps can you do to reduce phone addiction?

  • Turn on the program that logs your actual time spent on the phone every day.
  • Turn off all notifications
  • If you use YouTube, don’t follow any of the recommendations but only watch videos that you have searched yourself
  • don’t bring the phone into your bedroom
  • Instigate some screen-free days (for instance, on weekends or on holidays)

Adé Nathan

Nathan T. Freeman passed away on 12th April 2021.

He was one of the gurus of the Notes/Domino developer community, very much at the cutting edge of technology and always pushing the boundaries of what was possible with our beloved Notes stack. An early adopter of XPages, he was one of the first to show that one could significantly improve the quality of the XPages applications by concentrating on pure Java Development (which was unfortunately hidden under the covers of XPages), and also one of the first ones to eschew it.

He was one of the founders of OpenNTF, and in a lucky twist of fate his initial were NTF, the file extension for Notes templates, which I always found particularly nifty.

He had an abrasive online personality completely belied by his charm and affability when met in person. I had the pleasure of emptying a bottle of whisky with him on a long night in Eindhoven at the Engage meetup. Eloquent and quick-witted, he was a pleasure to talk to, and an excellent intellectual sparring partner.

Due to unfortunate circumstances his family is in dire straights, I include a GoFundMe link if you would like to contribute.

We will miss you Nathan.

Andrew

Engage 2019 Recap

Theo Heselmans and his wife Hilda have once again pulled off a wonderful event in Brussels. The world’s biggest ICS conference attracted attendees from all over the world, from as far away as New Zealand, Japan, the U.S.A and even La Réunion.

HCL continued to impress with its energy and commitment, but in terms of news there was nothing newer than what was divulged at the HCL Milan factory tour.

The sessions which I thought most thought provoking were Knut Herrmanns’ Web-component session, which demonstrated the creation of custom HTML tags (enticingly, he created a new tag <domino-view>). Knut does have a bad habit of saying ‘this is really easy’ at the moment that I am struggling to understand.
Jesse Gallagher suggested compelling ways of recycling skills learned with XPages, since it has become clear, if not officially admitted, that XPages will not receive much investment in the future.

Gab Davis made an enlightening comparison between the on-premise Mail servers Domino and Exchange and I discovered that Microsoft has made a sterling effort at making the local e-mail client experience very configurable, whereas Domino has crafted an experience which is apparently more admin-friendly. This surprised me, as I thought the admin interface for Domino was not first in class. Frank van der Linden made an honest comparison between the currently popular front-end frameworks Angular, React and Vue, and ended up with preferring Angular. There was some huffing and puffing from the back rows from Thilo Volprich (who prefers Vue) and Knut Herrmann (who prefers React)

Daniel Nashed and Thomas Hampel were obviously having fun showing us how to implement a Domino server within a Docker file; they will make the images and the scripts available to us. I imagine this should simply deployment, especially for small contained applications, but I can’t yet see the direct use case for this.

andrew_presenting_sphinx
For me it was also a first at Engage as I presented a session on Software Documentation. I must admit that I didn’t really relax until after my session was over. If you’re interested the presentation can be downloaded here:

https://www.slideshare.net/AndrewMagerman/engage-2019-software-documentation-is-fun-if-you-have-the-right-tools-introducing-sphinx

One point that was reinforced: if you want to really know something, you should
present it. Turns out the risk of being asked a question that one can’t answer
is a powerful motivator. In the case above, there was a certain amount of
voodoo magic in the Makefile syntax, which I had previously just shrugged off
with a ‘well that works anyway’ and which I now understand.

I was impressed that Peter Straxx, of the Belgian GroupWave company (one o SNoUG’s sponsors last year), actually owned a Lotus car and had showcased it at
the venue entry.

As to the venue, Autoworld is certainly impressive and the cars a wonder to look at. It did sometimes feel too big, where even for the first and last keynotes, when we were 440, the place is so spacious that it looked like we were too few.

I learned a lot, ate too much, drunk too much lovely beer, and caught up with
old friends and acquaintances. Wonderful.

HCL Factory Tour 2 – a look into the pipeline for Domino/Notes

The HCL Team, lead by Richard Jefts, was kind enough to invite me to its second Factory Tour, this time in Europe, in the HCL offices in Milan, in Italy. Milan is just a 3.5 hour trip in the train from Zürich, going through the new Gotthard tunnel, so it was an almost leisurely travel, compared to the trip to Boston last year.

richard_Jefts

There were 140 attendees, the majority coming from German-speaking countries.

We were treated to a wonderful evening, discovering the sights of Milano, and being invited to the Grand Hotel to eat delicious Italian food. Most of my table asked for a second serving of risotto!

Here are my take-home points:

Better Builds

HCL is modernising the build processes. The aim is to have consistent builds where all the software gets simultaneously built and released. In particular, we’re seeing simultaneous builds for the clients (i.e. Mac and Windows at the same time) and for the products (Domino, Notes, Sametime). It’s a most welcome development.

The last release of Domino saw some quality issues with the Language packs. Kudos to HCL’s Russ Holden for acknowledging the quality issue and dealing with it. Building language packs was, in the past, done by a completely independent department, almost as an afterthought. It turned out that the internationalisation process was not completely automated and needed some laborious manual adjustments. The upside of this is that now that the issue has been surfaced, the core Domino Team will be doing the internationalisation internally, automatically, which means that the next releases will see the language packs being simultaneously released with the main build. This is excellent news for European customers whose software won’t be second-class citizens anymore.

Better Processes

HCL is intent on having a closer relationship with its customers and its business partners, and we were shown many improvements that made me, as a small business partner, smile with barely concealed excitement.

The processes that are being now replaced were unwieldy and frustrating. These were tailored for large enterprises and not to small, nimble companies, and it’s very rewarding to see how HCL is revamping this:

Better support:

We’ve been treated to exceptionally fast support over the past year coming from HCL. The presence on Twitter is remarkable, and the speed with which issues are cleared is a real relief, and a real surprise compared to the previous, glacial pace. Kudos to Michael Fiorentino for the sterling work here.

Previously, business partners were not able to register issues and bugs directly, this will now change.

Better interaction with the customers:

HCL introduced their customer advocacy program, which will give you as a customer direct access to someone within the development team. This is such a good idea.

If you are a customer, register yourself on:

https://www.cwpcollaboration.com/advocacy.html

Closer relationship with the business partners

Speaking as a small provider, IBM’s process for obtaining licenses was so complicated, slow and heavy that it was not commercially viable to resell licenses, or to bundle services with installations. HCL’s processes are far more direct and the licensing model for new licenses will be far simpler. This opens opportunities for SMB clients (and the smaller, local providers which these favour).

If you are a business partner, be sure to register on:

http://www.hclpartnerconnect.com

Better Software

HCL Nomad (Notes Apps on Tablets)

We were shown a very polished, very quick demo of HCL Nomad (a Notes Client working within a tablet) on an Android device. The delicious side-effect of porting the code to Android is that HCL used OpenGL, which means that the codebase can be compiled as WebGL, which means it can be compiled for browsers! Yay.

There is still some work to be done as to the distribution mechanism, but I would say this is coming close to a shipping date.

Verse on Premise

Verse is also getting a makeover, including a much-expected revamp of the calendar view.

Better clarity on the future of the clients.

I was confused about was how to square backwards compatibility with a smaller, quicker client. As far as I have understood (the following here are my opinions):

The thick client based on Eclipse is going to stay on with minimal improvements so as to ensure backwards compatibility for customers that depend on the full range of the thick client’s capabilities.

HCL Places is still a work in progress and will include some Low-Code options, apparently with an engine based on Node-Red. This seems to imply that HCL Places will try to integrate into cloud-based solutions with microservices.

The new kid on the block (for me) was the upcoming lightweight client. As I’ve understood, this will integrate the HCL Nomad code for interacting with applications, and Verse for the Mail experience. This is reassuring, both components seem well on their way and conceptually seems something which will be relatively straightforward to implement.

Search and DQL – security model will be seamless

The security model of Notes is the single biggest advantage the platform has over all others. As a developer, not having to worry about who has access to what data, once this has been determined on the record/document level, gives me great speed in development.

The demos we saw of DQL and of searching with Elastic Search were using Anonymous access. I was worried that we would lose our edge if the security model was not respected at a low-level, but HCL assured us that they are very aware of this. I’m hoping that the next demonstrations will include authorization and authentication.

Focus on application development.

vowe_in_milano

We had a surprise final keynote delivered by Volker Weber of vowe.net fame. I was delighted to see that Volker’s skills in stripping down things to the essentials was reflected in his presentation’s format – a series of pictures with no text, and the presentation’s content – which was to recognise that the core feature of Domino is cheap, robust app development. I couldn’t agree more, and I’m convinced that HCL agrees wholeheartedly too.
These are exciting times ahead for our community.

Profi-Tastatur für Entwickler: Das Swiss Developer Keyboard

Das Swiss Developer Keyboard ist eine speziell für Schweizer Programmierer und IT-Nerds entwickelte Tastatur. Keiner der großen Hersteller hatte eine gute mechanische Tastatur mit einem Schweizer Layout. Daher habe ich selbst eines kreiert, das ich der Schweizer Entwicklercommunity nicht vorenthalten möchte.

Sie können es gleich hier kaufen.

Das Keyboard ist so ausgelegt, dass Sie mit verschiedenen Betriebssystemen (MacOS / Windows / Linux) arbeiten können.

swissdevkeyboard

Weitere Funktionen, die ich hinzugefügt habe

Schweizer Layout

Da die meisten europäischen Sprachen einige zusätzliche Zeichen in ihrem Alphabet haben, sind die Tasten, die auf der US-Tastatur für Entwickler nützlich sind (Klammern, Schrägstriche usw.) mit diesen Sonderzeichen ersetzt. Die Zeichen, die wir wirklich ständig brauchen, sind daher nur über eine Kombination aus Shift und Alt Tasten erreichbar.

Es ist ziemlich schmerzhaft, so auf einer Schweizer Tastatur zu programmieren, und für eine Weile habe ich mein Layout auf Dvorak umgestellt.

Das funktionierte gut, solange ich in meinem Büro an meinem Computer saß. Aber beim ersten Besuch eines Kunden lief es spektakulär falsch ab. Ich konnte ihre Tastaturen nicht benutzen, so sehr war ich an das Dvorak-Layout gewöhnt. Nur schon ein Passwort einzugeben, das nicht auf dem Bildschirm angezeigt ist, wird zur Herausforderung.

Daher ist meine Empfehlung, sich an das Layout des jeweiligen Landes zu halten, damit Sie jede Tastatur beim Kunden vor Ort nutzen können.

Mac OS Mapping von “Entwickler-Charakteren” auf der Tastatur

Apple platziert seine Sonderzeichen an anderen Stellen als die Standard-PC-Tastatur. Normale Leute bemerken das nicht, aber Entwickler brauchen ständig ‘spezielle’ Zeichen – zum Beispiel \ oder { oder ~. Diese sind nicht auf der Apple Tastatur eingraviert. Meine Lösung war ein ein Spickzettel mit den Positionen dieser Zeichen.

Farbhilfe für korrektes Zehnfingersystem

Entwickler sind ständig am Tippen. Je schneller sie das Zehnfingersystem beherrschen, desto effizienter können sie kodieren. Nun gibt es einige Tasten, wo ich immer unsicher war, welchen Finger eigentlich der richtiger ist. Wird ‘B’ mit der rechten oder linken Hand getippt? Und was ist mit den Zahlentasten 1 und 2? Diese Tastatur benutzt einige Graustufen, um eine visuelle Hilfe für die korrekte Fingerstellung zu ermöglichen.

Zusätzliche Pfeile auf hjkl (hilft beim Benutzen vom Texteditor ‘vi’)

vi ist ein sehr alter, sehr schneller Texteditor und auf allen Unix / Linux-Servern universell vorhanden. Man navigiert mit den normalen Tasten zu verschiedenen Teilen des Textes, und hjkl sind die Tasten, die für die grundlegende Bewegung (einem Schritt) verwendet werden. Ich vergesse immer, welche Taste welche Richtung ist, also habe ich ein paar Pfeile auf diese Tasten gelegt.

Gute Ergonomie – kein Nummernblock

Es ist wichtig, Verletzungen am Handgelenk zu vermeiden – die Maus sollte so nah wie möglich an der Tastatur sein. Deshalb ist der Zahlenblock böse und Sie sollten auf jeden Fall Ihre Zahlen per Zehnfingersystem eingeben. Irgendwann denkt man nicht mehr drüber.

Funktionen, die vom Hersteller, WASD, bereitgestellt werden.

Diese Tastatur wird von WASD hergestellt, einem amerikanischen Hersteller hochwertiger Tastaturen nach Maß. Die zugrundeliegende Hardware ist die V2-Tastatur, die mit den folgenden Super-Features ausgestattet ist:

  • Sehr robust – es ist eine solide Tastatur
  • Schöne Cherry MX Schalter. Ich empfehle die klaren Schalter, wenn Sie etwas Ruhe brauchen, und die blauen Schalter, wenn Sie einen lauten Klick mögen (nicht gut für offene Büros)
  • DIP-Schalter, mit denen Sie die Tastatur auf der Hardware-Ebene ändern können. Meine Favoriten:
    • Umschalttaste auf Strg. Gibt Ihrem kleinen Finger viel Erleichterung!
    • Integrierte Funktionsbefehle Wenn Sie sich den Navigationsblock ansehen (Bild auf, Bild ab, usw.), sehen Sie, dass es eine Überlagerung für Wiedergabe / Pause, Lautstärke usw. gibt. Diese Tasten senden mit der Fn-Taste die tatsächlichen Hardware-Codes für Medien Steuerung.

Preis und Bestellung

Der Preis für die Tastatur beträgt ca. 200 USD (inkl. Versand in die Schweiz). Es ist nicht günstig, aber ein schönes, langlebiges Stück Hardware.

Sie können hier die Tastatur von WASD bestellen.