Profile

Cover photo
Frank Atanassow
Worked at Centrum voor Wiskunde en Informatica (CWI)
Attended Cornell University
Lives in Utrecht, NL
462 followers|94,479 views
AboutPostsCollectionsPhotosVideos

Stream

Frank Atanassow

Shared publicly  - 
 
I'll be honest: this scares me. Apparently the way this works is that you mark an entry point for the "feature" that you want to transplant, and an insertion point in the target program. You also need a test suite for the "organ" and for the target (to prevent regression). Then the transplanter does a bunch of flow analysis and genetic programming and fuzz testing until the suites pass. The article includes a link to a website with a preprint.
Code has been automatically "transplanted" from one piece of software to another for the first time
4
2
Frank Atanassow's profile photoS.M. Claassen's profile photoCarlos Scheidegger's profile photoRoss Schiff's profile photo
3 comments
 
At first sight MuScalpel resembles a 'viral' hack compensating for lack of modularity, abstraction and cross-implementation portability standards on the part of the respective human programmers.
Add a comment...

Frank Atanassow

Shared publicly  - 
 
I wish I had read this 10 years ago...
1
1
Hilmar Hoffmann's profile photo
Add a comment...

Frank Atanassow

Shared publicly  - 
 
People say there is no software crisis, but they neglect the countless sacrifices that we are expected to make just to mitigate software errors. Here is an article that suggests that (presumably server-based) software developers should completely lock down a machine that runs their program because any system state that is different from a tested system state cannot be relied upon. They recommend capturing a complete system image and even disallowing logins, because that alters the state.

I am not sure this goes far enough, though. Any system which allows instructions to be executed is at risk from a variety of sources. After all, it might be the wrong instruction. What we need is a mechanism to compute things without relying on the processor.

Therefore, I suggest you keep your server powered off. (This strategy requires some cooperation on the part of your users, of course, but we all have to make sacrifices in the interest of security and correctness.) If you see some blinking lights on your router, this means a user is attempting to contact your server application and you should expect a phone call. After the user connects with you acoustically, you will hear a series of beeps and bloops. The beeps denote 1's and the bloops denote 0's. It should be a simple matter to convert this sequence into an input message for your program, and for you to simulate the execution of the program on that input, resulting in a response of similar form which must be relayed acoustically to the user. (Be sure to tell them to wait a moment.)

The advantage of this strategy is that you, the developer, can examine the execution of your program on each input for errors, and mentally correct for them before you issue a response. Another advantage is that it is completely impervious to social engineering, as you can insist on only ever responding to beeps and bloops, not natural language. (Your users will learn to respect this.) Also, if you pick up the phone and the person at the other end is speaking English, you can be sure they are a hacker; hang up immediately. This will also save you the trouble of running your program on inputs which do not conform to the beep-bloop protocol, which lets you move more quickly through your connection queue.

Just a modest proposal.
2
Frank Atanassow's profile photoKoray Can's profile photo
3 comments
 
It's not two steps back unless the countermeasures are resulting in even more countermeasures,

So, you're saying things are worse now because we depend on software more, and even though it has improved, it has not improved in proportion to our increase in dependency?

I don't have the data to back up or refute such a statement.

Also, there's more than one kind of software. When you save a file into your google drive, they'd better not lose that file. That's a system you want to be able to depend on. (Modern day cloud systems are incredibly dependable, actually.)

There's also software that enables you, e.g. Twitter during the Arab spring, etc. and you don't care deeply whether everybody searching for a hashtag saw your message that had it. Or a cheap productivity app on your phone, which, despite its warts, is the only thing in existence that does 90% of what you need.

Most software that is written is not the dependable kind. 
Add a comment...

Frank Atanassow

Shared publicly  - 
 
I'm tired of reading about "immutability". It completely misses the point, which is reasoning about denotations, whence compositionality. It's nice that people are importing ideas from functional programming into other languages, but it always seems to me that they preserve the letter of the law rather than the spirit.
5
Add a comment...

Frank Atanassow

Shared publicly  - 
 
Someone on reddit asked for a summary of this talk by Peter Sewell, but probably no one will read it there, so I'll just repost here in case anyone is interested.

The talk is by Peter Sewell, a programming language theory researcher who's worked the last couple years on formalizing and verifying key infrastructure like TCP/IP and multiprocessor shared memory architectures. The talk is about correctness.

In the beginning of the talk he suggests that computer problems are ubiquitous because software is incorrect. He says we've gotten good enough at bridge-engineering to predict whether designs will work, but engineering methods for software are wholly insufficient. Also, software is different in nature from bridge-engineering because bridge components deform before they reach their tolerance, whereas programs break abruptly. He suggests using modern programming languages like ML which are designed and specified mathematically. But then he asks what can be done about the 100's of million lines of code which already exist, and which we rely upon daily. He says that, given the enormity of the code, machine-assisted proof is the only feasible method of verification. (Testing is insufficient because code paths and state spaces grow exponentially with code size.)

After considering how, for example, a typical browser relies upon a hodge-podge of lower-level software like JS engines and TCP/IP stacks, he says he decided to focus his research on what can be done to improve the correctness of this key infrastructure.
Then he examines two examples. The first is shared memory concurrency in a typical multiprocessor architecture. He illustrates how things like out-of-order execution confound naive expectations. But "going to the spec" -- the architecture manuals -- and trying to make sense of memory barriers, etc. is not feasible either because they are specified in prose which is not clear enough for practical purposes. For example, is this behavior allowed by the spec or not? He says he tried to formalize the spec, but that it was impossible. So he had to talk to the memory architecture engineers, who are the people with the authority to decide whether some behavior follows the spec or not. So in effect there is no spec; there are just people who can decide for this or that instance whether a correct implementation of the architecture allows some behavior. Ultimately, he decided to formalize one interpretation of the spec in conjunction with such an engineer, and then reconstruct by testing empirically whether actual implementations allowed it.

Then he talks about a similar formalization of the TCP/IP protocol. There were similar problems with this: it is not clear what the correct behavior should be. He formalized his intepretation in Ocaml as a reference specification; it lets you check whether some behavior is allowed or not. It looks to be 50-100 pages long.

I think the thrust of the talk is that prose specifications are insufficient, that our programs are built on semantic sand and that we ought to write specifications formally in a way which admits machine-assisted checking.
9
1
Sean Leather's profile photoShriram Krishnamurthi's profile photoFrank Atanassow's profile photoDev Lila's profile photo
3 comments
 
+Shriram Krishnamurthi  Thanks! I posted that talk of Kennedy and Benton's to r/programming, as I think seeing x86 embedded in another language would amaze many readers (as it did me). Or rather, I posted "Coq: The world's best macro assembler" and linked the slides from their talk in the comments.
Add a comment...

Frank Atanassow

Shared publicly  - 
 
This is a video of a talk about how to render 3D in a 2D, anime style.

Guilty Gear Xrd is a Japanese brawling video game like Street Fighter. It's unusual because it looks like a sprite-based 2D game, but actually achieves this effect by rendering 3D models using non-photorealistic techniques. A few other games have used cel-shading methods to emulate that style, but this game went to extremes to prioritize the fidelity of the 2D target, and preserve the distinctive anime style.

One reason I find this interesting is that it amounts to an algorithm for the anime style. To be sure, there is plenty of tweaking of the models and animations by artists (for example, normals on the models and scaling during animations), but the 2D result is rendered in real time from 3D, and some of these design decisions sound like putative rules that define a genre.
2
Add a comment...
In his circles
107 people
Have him in circles
462 people
Steve Zdancewic's profile photo
‫نبيل نبيل‬‎'s profile photo
Remy Willems's profile photo
Leon Smith's profile photo
Erik Kobes's profile photo
I Sharaabi's profile photo
Martin Holkamp's profile photo
Rob Oostdam's profile photo
Doug Landauer's profile photo

Frank Atanassow

Shared publicly  - 
 
She should've hired a psychic.

(via r/irony)
2
S.M. Claassen's profile photoFrank Atanassow's profile photo
2 comments
 
It wasn't in the cards.
Add a comment...

Frank Atanassow

Shared publicly  - 
 
Separated at birth? Mark Moses vs. Charles Grodin
Mark Moses: Mad Men, Homeland, Desperate Housewives
Charles Grodin: Midnight Run, Beethoven, Rosemary's Baby

Been watching Mad Men and Duck Phillips seemed sooooo familiar... hereby my contribution to this genre.
1
Add a comment...

Frank Atanassow

Shared publicly  - 
 
I've been watching Mad Men recently, and in one episode a character tells his son, "It's good when it's hot to drink something hot. (If you'd continued with the Scouts, you'd've learned that.)" Eh? I'd never heard this. So I googled the first sentence, and, lo:

“What we found is that when you ingest a hot drink, you actually have a disproportionate increase in the amount that you sweat,” Jay says. “Yes, the hot drink is hotter than your body temperature, so you are adding heat to the body, but the amount that you increase your sweating by—if that can all evaporate—more than compensates for the the added heat to the body from the fluid.”
A rigorous experiment revealed that on a hot, dry day, drinking a hot beverage can help your body stay cool
1
S.M. Claassen's profile photo
 
This is second nature to anyone who has lived in the tropics.
Add a comment...

Frank Atanassow

Shared publicly  - 
 
If a factorial method is to return a `long`, there are only 21 valid input values that can be used ... namely 0, 1, ..., 20.  This fact allows us to pre-calculate all results and just use a lookup array

Good point, which never occurred to me!
4
Add a comment...

Frank Atanassow

Shared publicly  - 
 
I came across the following sentence in a paper: "A natural interpretation of the objects of S^((C/0)^op) is that they are non-autonomous dynamical systems, such as arise from the solution of ordinary differential equations which contain “forcing” terms or whose inertial or frictional terms depend on time in some manner (such as usury or heating) external to the self-interaction modeled by the differential equation itself."

Just curious but, does anyone know what the word "usury" means here? Obviously it's not money-lending. A Google search turned up a scant few mentions on pages to do with materials engineering, such as, "good resistance to the usury, optimal resistance to the deformation..."
1
Dan Piponi's profile photoFrank Atanassow's profile photoS.M. Claassen's profile photo
5 comments
 
Derivatives of displacement serve well to cover higher-order dimensions of wear. (Cf. < http://wearcam.org/absement/Derivatives_of_displacement.htm >.)
Add a comment...

Frank Atanassow

Shared publicly  - 
 
I'm tired of seeing "Atheist 0wnz Creationist" videos pop up on my "Recommended videos" on Youtube. This guy responds to Creationists' questions intelligently, civilly and enthusiastically. Kudos.

Science isn't only about answering questions, but also about asking them. If you believe in rationality and the scientific method, you ought to treat other people's expressing doubts as an opportunity, not a nuisance -- not just to convince them, but also to test your own understanding and to look for flaws in the theory itself. TomWalksThrough exhibits the right spirit.
4
1
Frank Atanassow's profile photoS.M. Claassen's profile photoDaniel Yokomizo's profile photo
7 comments
 
I suspect we both agree that public opinion does not constitute truth. In both scientific and religious institutions there are conservative elements - favoring respectively an evolutionary, Kuhnian paradigm and a more literal interpretation of scripture along with greater adherence to dogma - and progressive proponents - favoring respectively a revolutionary, Popperian approach to epistemology and a critical approach to hermeneutics and dogma. That constructive dialogue would need to occur between opposing factions within scientific and religious institutions, as well as between scientific and religious institutions, would appear to contribute to the complexity of any reconciliatory undertaking.

As far as logic and religion is concerned, the Scholastic tradition (Thomas Aquinas et al) has made it clear that while faith may be non-rational, it is not unreasonable - and stronger yet, as you imply, must demonstrate logical consistency, witness e.g. the Summa Theologiae as an axiomatized logical treatise of Christian (Catholic) dogma. Of course we have to add that any of the ontological proofs regarding God offered at the time would be valid iff one were to accept the underlying assumptions, which are indeed faith-based.

As far as religion necessarily being dismissed as projection is concerned, this does not do justice to the spiritual experience as embedded/engaging within the physical realm and drawing on it for inspiration - creation/nature ultimately reflects the Creator. The same projection argument could be held against behavioral scientists involved in cross-cultural studies or even physicists operating at the quantum level whose presence as observers projects onto the observed events.

In general what I feel we need to acquire is a common understanding (through universal education) that science and religion are anything but antithetical and that the synergy between reason and spirituality (as opposed to institutionalized religion) can shape perspectives for the betterment of humankind.
Add a comment...
Frank's Collections
People
In his circles
107 people
Have him in circles
462 people
Steve Zdancewic's profile photo
‫نبيل نبيل‬‎'s profile photo
Remy Willems's profile photo
Leon Smith's profile photo
Erik Kobes's profile photo
I Sharaabi's profile photo
Martin Holkamp's profile photo
Rob Oostdam's profile photo
Doug Landauer's profile photo
Education
  • Cornell University
    Computer Science, 1990 - 1995
  • Utrecht University
    Programming Languages, 2000 - 2004
Basic Information
Gender
Male
Other names
Frank Christoph
Story
Tagline
Terminus est.
Introduction
I'm a programmer and computer science researcher who hasn't finished his Ph.D. dissertation (yet). My main interest is in programming language theory, and particularly algebraic semantics of typed functional languages (such as Haskell).
Bragging rights
"So far, taking Jesus to be the size of an average Nazarene man I have eaten seven whole Jesuses plus one of Jesus's legs. This is more whole Jesuses than anyone has ever eaten. (Neil Petark says he has eaten 12 Jesuses, but he includes bread and wine he consumed at Protestant churches and the Protestants do not believe in Transubstantiation, so he is wrong and I am still the Jesus eating King. Neil Petark has really only eaten 4 Jesuses which is rubbish.)"
Work
Occupation
Computer science researcher
Skills
Programming, research, functional languages, type systems, semantics
Employment
  • Centrum voor Wiskunde en Informatica (CWI)
    Research Assistant, 2006 - 2007
  • Utrecht University
    AIO, 2000 - 2005
  • Next Solution Co.
    Programmer, 1995 - 2000
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
Utrecht, NL
Previously
Los Angeles, CA, US - Königstein, Germany - Tokyo, Japan - Nagoya, Japan - Ithaca, NY, US