## Posts

### Software Language Engineering FAQ

Looking forward delivering the keynote for SLE 2019 at SPLASH 2019 in Athens.

TitleSoftware Language Engineering -- 42 Frequently Asked Questions

SpeakerRalf Lämmel, Software (Language) Engineer, Facebook, Probability London

Abstract See the questions below. Beware of an Easter egg.
My talk will cherry-pick from the list and deliver informed opinions.

On the term "software language" (SL):
Q1: What is the definition of (the term) SL?
Q2: What different types of SLs do exist?
Q3: What are borderline examples of SLs?
Q4: Why not just call it computer language?
Q5: Why is such a broad notion useful?
Q6: What parallels exist between software and natural languages?
Q7: When was the term coined, by whom, and why?

On the term "SL engineering" (SLE):
Q8: What is the definition of SLE?
Q9: How can SLE be viewed as a specialization of SE?
Q10: What's the lifecycle of a SL?
Q11: What's the key notion of SLE? (Spoiler:…

### Lambdas Query with Reason

I will be visiting Simon Thompson and the PLAS seminar organized by Olaf Chitil at University of Kent on 15 Oct 2018.

SpeakerRalf Lämmel, Facebook London and University of Koblenz-Landau (on leave)

Title Lambdas Query with Reason

Abstract Much of the Big Data hype focuses on the size of data and on the use of ML/AI to get something out of the data and on the programming technologies and infrastructure to deal with size, ML, and AI. Our research focuses on a complementary problem: the ontological semantics of data and how to use it for querying data programmatically and to help programmers in the tradition of static typing.

In this talk, I present two strongly connected pieces of work: i) $\lambda_{\mathit{DL}}$ -- a lambda calculus with description logic-aware type system and means of querying semantic data ('triples'); ii) a completed language integration such that description logic and a subset of the standardized Sparql language are embedded into Scala. The integration reus…

### Message Everyone -- Startup Announcement

Please check out the date at the bottom of the post before sending more inquiries to me and others.

I have taken unpaid leave of absence from my faculty job to work on a startup idea — public codename: “Message Everyone”. Sorry for misleading colleagues and family about my career plans for the last few months.
The idea took shape more than two years ago, when I was organizing the IFL 2015 conference on campus and where I had to communicate with 2 secretaries, 3 more local staff members, and 3 student volunteers; I had to keep in touch with about 8 persons shortly before, during, and shortly after the event to ensure a smooth operation. Upfront, I was offering the following access paths: Skype, Telegram, WhatsApp, Twitter, FB Messenger,Google Hangout, SMS (and Email and phone). This wouldn’t cover everyone’s messaging preferences and so I would need to install two more apps which I don't remember by now.
If I ran this conference today, Signal, Viber, SnapShat, LINE, and a few othe…

### Big Code Science

I am pitching "Big Code Science" (my take on the mashup of mining software repositories, source-code analysis, program comprehension, etc.) to an inter-faculty audience at my university. (I am about to start an extended unpaid leave of absence to join Facebook and do work possibly a bit related to big code science.) I will just have 15min in a brown-bag setting and thus, I am going to use images, charts, and simple messages.

Title: Big Code Science

Abstract: Code Science is Data Science for code. Big Code Science is the scientific approach to accessing, analyzing, and understanding big data where the data here is code or data related to software development. There is several reasons why Big Code Science has taken off. (i) Open Source development has exploded in the last 10 years so that we have access to terabytes of source code, version history, developer communication, documentation, release infos, bug tracking info, etc.; not trying to learn from the past would be crazy. (i…

### Hardware lovers --- it's Christmas time!

I have enjoyed this collection long enough.

It's time to pass it on to a broader audience or more committed individuals.

Constraints for passing on stuff:
I like Saint-Émilion (Grand Crux specifically).The stuff is located in Koblenz; I live in Bonn.Pick up preferred; I can deliver to "nearby" institutional collectors.Let's take photos of the hardware, collector, and me -- and post it on Instagram.  There is this stuff:
Schneider CPC 464 with green monitor and Vortex floppy drive.Sharp PC 1500 + Ink PrinterKC 85 (East-german home computer) with various accessoriesZX Spectrum + thermo printerCBM 4032 + tape recorderCommodore 64Personal computer ABC 1600 by LuxorRobotron terminal K 1820 (VT 220)Laser Color Computer 210-8k (VTech Laser 200)Programmable calculator B3-21 I should also not that I have endless amounts of other legacy hardware such as phones, modems, printers, cables, and what have you. So you are encouraged to visit me in Koblenz and take stuff and leave some…

### Thoughts on a very semantic wiki

Preamble101wiki started as a boring mediawiki installation to document software systems in the chrestomathy‘101’semantic wiki extensions were quickly adopted; eventually our team developed a full blown proprietary semantic wiki sort of from scratch. Now we also rehosted it and provided it with new looks. (BTW, the 101companies brand name is now all gone. It's now just '101' really.)

The biggest mistake we (me!) made in said project ‘101’ is that we had only very loose specs for system implementation and system documentation; we had no proper process for checking and accepting contributions either. Thus, the 101wiki content was always a big mess and it still is. This problem is so serious that we switched to discouraging contributions a few years ago and rather deal with what we have and add content only when absolutely necessary. However, we depend on the 101wiki content for teaching; we also use it as a linked data hub for software language engineering-related research p…

### Peano goes Maybe

Just for the fun of it, let's represent Nats as Maybies in Haskell.

import Prelude hiding (succ) -- A strange representation of Nats newtype Nat = Nat { getNat :: Maybe Nat } -- Peano zero zero :: Nat zero = Nat Nothing -- Peano successor succ :: Nat -> Nat succ = Nat . Just -- Primitive recursion for addition add :: Nat -> Nat -> Nat add x = maybe x (succ . add x) . getNat -- Convert primitive Int into strange Nat fromInt :: Int -> Nat fromInt 0 = Nat Nothing fromInt x = succ (fromInt (x-1)) -- Convert strange Nat into primitive Int toInt :: Nat -> Int toInt = maybe 0 ((+1) . toInt) . getNat -- Let's test main = print \$ toInt (add (fromInt 20) (fromInt 22))
I wrote this code in response to a student question, whether and, if so, how one could code recursive functions on maybies. This inspired me towards the exam question as to how the above code compares to more straightforward code which would uses an algebraic datatype with Zero and Succ constructors instead …