Software Language Engineering FAQ

Looking forward delivering the keynote for  SLE 2019  at SPLASH 2019  in Athens. Title Software Language Engineering -- 42 Frequently Asked Questions Speaker Ralf Lämmel, Software (Language) Engineer, Facebook, Probability London Abstract See the questions below. Beware of an Easter egg. As if I knew the answers or was entitled to answer! My talk will cherry-pick from the list and deliver informed opinions. Your questions and answers will be as good as mine. 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? Q1

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. Speaker Ralf 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.

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, LI

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 cr

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 Printer KC 85  (East-german home computer) with various accessories ZX Spectrum  + thermo printer CBM 4032  + tape recorder Commodore 64 Personal computer  ABC 1600  by Luxor Robotron 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

Thoughts on a very semantic wiki

Preamble 101wiki  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 d

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 in