<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-28320851</id><updated>2011-09-06T08:00:07.482-07:00</updated><category term='switzerland'/><category term='running'/><category term='java'/><title type='text'>Uncut blocks of wood</title><subtitle type='html'>Burak Emir is still searching for technology that improves life.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-28320851.post-6085678160404901873</id><published>2011-06-02T04:22:00.000-07:00</published><updated>2011-06-11T09:43:28.967-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java wildcards need taming</title><content type='html'>In this year's PLDI, there is a session where every paper starts with the gerund "Taming ... "&lt;br /&gt;Seems like some computer science topics are inherently wild. And what else could these papers talk about than ... Java wildcards :)&lt;br /&gt;&lt;br /&gt;Ok, ok, it's only two papers after all. Still, the shrewishness is real, because since Java wildcards were imposed upon programmers, we find ourselves running into weird situations where people need silly casts, or declare two variables of different types for the same value "to make the compiler happy". &lt;br /&gt;&lt;br /&gt;Well, if you feel like turning it around and make the compiler unhappy for once, try feeding it this :)&lt;br /&gt;&lt;verbatim&gt;&lt;br /&gt;// source: &lt;br /&gt;//   Ross Tate, Alan Leung, Sorin Lerner. &lt;br /&gt;//   Taming Wildcards in Java’s Type System. in PLDI 11&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;class C&amp;lt;P extends List&amp;lt;? super C&amp;lt;D&gt;&gt;&gt; implements List&amp;lt;P&gt; {}&lt;br /&gt;class D implements List&amp;lt;C&amp;lt;? extends List&amp;lt;? super C&amp;lt;D&gt;&gt;&gt;&gt; {}&lt;br /&gt;&lt;/verbatim&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-6085678160404901873?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/6085678160404901873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=6085678160404901873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/6085678160404901873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/6085678160404901873'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2011/06/java-wildcards-need-taming.html' title='Java wildcards need taming'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-2595345737996100606</id><published>2011-05-10T13:14:00.000-07:00</published><updated>2011-05-10T13:14:36.439-07:00</updated><title type='text'>Finishing SOLA 2011</title><content type='html'>&lt;div class="separator" style="clear: both;"&gt;Some pics from the SOLA run last weekend, after 11 km. I wasn't in shape at all, and for some reason was so tense that I had sore muscles in the shoulders (?) but it was good fun. I guess this is the smile of a person who is glad to be still alive :)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0mDwsHG0okw/Tcmaxf-YYkI/AAAAAAAAAP8/EdfQdHT3xG4/s1600/sola11_e06_bj_1235.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-0mDwsHG0okw/Tcmaxf-YYkI/AAAAAAAAAP8/EdfQdHT3xG4/s320/sola11_e06_bj_1235.jpg" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-eGQueGQhbgo/TcmbBOpV_cI/AAAAAAAAAQA/hiB08S-e7-M/s1600/sola11_e06_bj_1237.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-eGQueGQhbgo/TcmbBOpV_cI/AAAAAAAAAQA/hiB08S-e7-M/s320/sola11_e06_bj_1237.jpg" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-2595345737996100606?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/2595345737996100606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=2595345737996100606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/2595345737996100606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/2595345737996100606'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2011/05/finishing-sola-2011.html' title='Finishing SOLA 2011'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-0mDwsHG0okw/Tcmaxf-YYkI/AAAAAAAAAP8/EdfQdHT3xG4/s72-c/sola11_e06_bj_1235.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-2289730829840800182</id><published>2011-05-06T11:01:00.000-07:00</published><updated>2011-05-06T11:01:12.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='running'/><title type='text'>Prepared for SOLA 2011</title><content type='html'>&lt;div class="separator" style="clear: both;"&gt;Tomorrow, there is a run around Zurich, called &lt;a href="http://portal.sola.asvz.ethz.ch/Seiten/default.aspx"&gt;SOLA&lt;/a&gt;. Teams of 14 people. Thanks to Aaron Z, I am going to take part in it. This is the first time I'll take part in a competition - excitement!&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wILxAQVnEF4/TcQxswGAsCI/AAAAAAAAAPc/jzQQolvSg-U/s1600/IMG_20110506_191650.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-wILxAQVnEF4/TcQxswGAsCI/AAAAAAAAAPc/jzQQolvSg-U/s320/IMG_20110506_191650.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-2289730829840800182?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/2289730829840800182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=2289730829840800182' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/2289730829840800182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/2289730829840800182'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2011/05/prepared-for-sola-2011.html' title='Prepared for SOLA 2011'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-wILxAQVnEF4/TcQxswGAsCI/AAAAAAAAAPc/jzQQolvSg-U/s72-c/IMG_20110506_191650.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-2917416630602017524</id><published>2011-03-26T03:07:00.000-07:00</published><updated>2011-03-26T03:16:43.977-07:00</updated><title type='text'>Creative Deprecation</title><content type='html'>I came across Zach Tellman's essay [1], and I find it really lucid.&lt;br /&gt;&lt;br /&gt;quote: "There is a tension between knowledge and creation: by pursuing one, he [the technologist] retreats from the other."&lt;br /&gt;&lt;br /&gt;Here is an essay (really, an attempt) to connect it with some things I have observed.&amp;nbsp;I believe it is possible to draw a connection to what economists call Schumpeter's Creative Destruction.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Creative Deprecation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In large-scale software development it is possible to observe a large-scale pattern. One of the effects is that, while working on a development project, software engineers typically have to commit some time to learning new technologies outside of their project.&amp;nbsp;This pattern consists of something like a cycle that relates knowledge about technology to creation of new technology. Here is an analogy to economy that may help clarify the scope of this pattern:&lt;br /&gt;&lt;br /&gt;The opening up of new markets and the organizational development from the craft shop and factory to such concerns as US Steel illustrate the process of industrial mutation that incessantly revolutionizes the economic structure from within, incessantly destroying the old one, incessantly creating a new one ... [The process] must be seen in its role in the perennial gale of creative destruction; it cannot be understood on the hypothesis that there is a perennial lull.&lt;br /&gt;—Joseph Schumpeter, The Process of Creative Destruction, 1942&lt;br /&gt;&lt;br /&gt;What matters here is the &lt;b&gt;system&lt;/b&gt; view of economy, the purported economic structure. "The" Economy is a productive chaos with too many factors to keep track of. And so is software development, we can also see it as a "system" of people learning, creating and applying technology.&lt;br /&gt;&lt;br /&gt;The currency&amp;nbsp;are artifacts of technology. Software (especially open source software) is easily accessible and usable. What is not so easily transferable is in-depth knowledge, experience about a particular piece of software technology.&amp;nbsp;Every new technology (take something like Megastore [3], but also the Google Apps ecosystem), and also backward incompatible changes to technology take time to be learnt and taken up by software engineers. And integrating technology often creates something synergistic, that comes with its own characteristics.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Understanding the cycle&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let us look at the cycle. At the beginning of it, there is a team building something new that is supposed to replace something old, or change it (radically) for the better. In the middle of the cycle, people widely acknowledge that the new thing is better and it is worth investing into using it. Towards the end, people have spent enormous efforts in putting the new technology to practical use, in ways not anticipated by the initiators. As more and more people have embraced the new way, and project roll it out, shortcomings appear. In the end, the new technology has become the standard, and the old is considered something low-level or arcane.&lt;br /&gt;&lt;br /&gt;This is very different (and sometimes conflicting) with what is usually understood under "software development cycle". The latter cycle is only concerned with a single piece of technology. It is part of large system of creative deprecation and interacts with it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Optimizing the cycle&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The constantly changing world of available technologies and the speed at which basic assumptions are replaced by new, different ones creates friction for the software developer: it means knowledge, which had to be built up, is becoming &lt;b&gt;obsolete&lt;/b&gt;. It means, time and resources have to devoted to learning the new stuff, even if the &lt;b&gt;functional&lt;/b&gt; specification of the new technology is exactly the same as the old.&lt;br /&gt;&lt;br /&gt;Software developers are humans, and as humans we have limited cognitive capacity to learn: if a technology is sufficiently complex, we cannot start using it and learn it "along the way". And here, methods exists that can help optimize the learning effect. One example of this is prototyping: we build something limited, admitting that we cannot build the whole thing at once, and the intention is to &lt;b&gt;learn&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The way forward?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Claiming that this aspect has been ignored by the software industry would be going too far. There are many processes and development practices which can be understood as a concession to creative deprecation, from unit testing over javadoc to IBM's original code reviews (where developers formed committees, printed source code on paper, read it out and discuss).&lt;br /&gt;&lt;br /&gt;The difficulty in taking advantage of creative deprecation is that our methods of "measuring" knowledge are not very developed. What are the indicators? Quality of past contributions would be a great indicator, but we don't seem to have accepted indicators for quality of artifacts either (test coverage is probably a good start).&lt;br /&gt;&lt;br /&gt;More challenges come from the fact that individual knowledge does not add up. A team can have a wizard that wrote the book on X, and be clueless about X when that wizard is on vacation or transfers to another project. Agile methods that try to increase the "bus factor" are targeting exactly this aspect.&lt;br /&gt;Preferring "simple" APIs (meaning: APIs that do not come with a high learning "price tag") is another method, trying to minimize the number of public methods are other examples.&lt;br /&gt;&lt;br /&gt;Modest, and effective proposals are to&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;acknowledge that knowledge cycle matters and be aware that reducing complexity, in the big picture, is at least as important as adding features.&lt;/li&gt;&lt;li&gt;leave room for individuals to acquire knowledge, even if it is unrelated to the project&lt;/li&gt;&lt;li&gt;control the cycle, by controlling time and scope of the destruction and mitigating the effects of obsoleted knowledge. For instance, alternate cycles of expansion (features, integration of new technologies) followed by contraction (optimizations, cut-over,&amp;nbsp;deprecation, refactorings,&amp;nbsp;bug-fixes and other maintenance) when planning a project.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://ideolalia.com/becoming-eloi-becoming-morlock"&gt;http://ideolalia.com/becoming-eloi-becoming-morlock&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://en.wikipedia.org/wiki/Creative_destruction#Schumpeterian_Creative_Destruction"&gt;http://en.wikipedia.org/wiki/Creative_destruction#Schumpeterian_Creative_Destruction&lt;/a&gt;&lt;br /&gt;[3]&amp;nbsp;&lt;a href="http://highscalability.com/blog/2011/1/11/google-megastore-3-billion-writes-and-20-billion-read-transa.html"&gt;http://highscalability.com/blog/2011/1/11/google-megastore-3-billion-writes-and-20-billion-read-transa.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-2917416630602017524?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/2917416630602017524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=2917416630602017524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/2917416630602017524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/2917416630602017524'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2011/03/creative-deprecation.html' title='Creative Deprecation'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-2960630182481344826</id><published>2010-12-09T02:07:00.000-08:00</published><updated>2010-12-09T02:07:48.804-08:00</updated><title type='text'>Yacc is of the Living Dead</title><content type='html'>The scientific process seems to evolve towards something like pop culture and music industry. For starters, we have publishing houses and record companies.&lt;br /&gt;&lt;br /&gt;And then, there is a scientific article with the title "Yacc is dead" [1] which, quite possibly, has reached more people than all the accepted papers of the conference to which it was submitted.&lt;br /&gt;&lt;br /&gt;Russ Cox criticized this paper quite harshly in an insightful blog post [2].&lt;br /&gt;&lt;br /&gt;So, in short, the paper proposes a method that yields all parse trees and claims that the approach is "efficiently on average". The authors run a benchmark, but of course a benchmark is not exactly a proof. Russ's argument (by regexp analogy) goes something like we can make up grammars that simulate NFAs. Since there are regexps whose NFA will have O(exp(n)) possible successful runs on input of length n, (maybe something like &lt;code&gt;a*a*&lt;/code&gt;), getting all parse trees means asking for trouble. &lt;br /&gt;&lt;br /&gt;Where I am not so sure is, whether the authors are really unaware of this. It is possible to understand "parses efficiently on average" as "works efficiently for the average grammar programmers want to parse". Writing an ambiguous grammar by accident is one thing, writing something like &lt;code&gt;a*a*&lt;/code&gt; is something else. Agreed, a statement like "works well for the average grammar" does not really have much scientific worth -- and Russ's criticism still stands -- but indeed it may work out in practice.&lt;br /&gt;&lt;br /&gt;The math that derives working parsers from their specification is beautiful... the issue for practical purposes is that there are are other approaches to combinator parsing -- these are the ones that should be compared with derivative-based method, not yacc. &lt;br /&gt;&lt;br /&gt;There is at least one paper (journal publication) out there that shows how memoization can make top-down functional parsers linear [3?], unfortunately I cannot access it so cannot comment on how applicable it is here. What's next, DMCA for papers? &amp;lt;b&amp;gt;J'accuse&amp;lt;/b&amp;gt;.&lt;br /&gt;&lt;br /&gt;Regardless what is up with yacc or memoization, among functional programming literature, there is a plethora of papers that use parser combinators to achieve polynomial parsing (the first reference that came to my mind is Swierstra and Duponcheel's paper [4]), but the wikipedia page on combinator parsing [5] has a link to more recent -- 2007 -- work from Frost and Hafiz that looks interesting.&lt;br /&gt;&lt;br /&gt;There are no conclusions here. Combinator parsing is not new, but with the rising popularity of Scala, it is pretty much alive and kicking. After all, it has a packrat combinator parsing library included. For my next parser, I will certainly use that one and not Might and Darais approach. Still, I think the approach described in Might and Darais paper has educational value and I sincerely hope the authors will come up with a longer, more polished version.&lt;br /&gt;&lt;br /&gt;[1] Matthew Might, David Darais. &lt;a href="http://arxiv.org/abs/1010.5023"&gt;Yacc is dead.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[2] Russ Cox. &lt;a href="http://research.swtch.com/2010/12/yacc-is-not-dead.html"&gt;Yacc is not dead&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;[3?] Frost, Szydlowski. Memoizing purely functional top-down backtracking language processors. Science of Computer Programming&lt;br /&gt;Volume 27, Issue 3, November 1996, Pages 263-288&lt;br /&gt;&lt;br /&gt;[4] Swierstra, Duponcheel. &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2760"&gt;Deterministic, error correcting parser combinators.&amp;nbsp;&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[5] &lt;a href="http://en.wikipedia.org/wiki/Parser_combinator"&gt;http://en.wikipedia.org/wiki/Parser_combinator&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-2960630182481344826?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/2960630182481344826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=2960630182481344826' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/2960630182481344826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/2960630182481344826'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2010/12/yacc-is-of-living-dead.html' title='Yacc is of the Living Dead'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-5106653356288925783</id><published>2010-08-19T20:54:00.000-07:00</published><updated>2010-08-19T21:08:18.100-07:00</updated><title type='text'>Romantic enthusiasm for verification</title><content type='html'>Recently, a workshop got me interested in contract programming again. In essence, programming by contract means we annotate our source code with pre- and postconditions.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;@Requires&lt;/span&gt;(numChars % 2 == 0)&lt;br /&gt;&lt;span style="color: red;"&gt;@Ensures&lt;/span&gt;(result.length() == numChars)&lt;br /&gt;String foo(int numChars) {&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is like saying "the only proper way to call this method with a &lt;code&gt;numChars&lt;/code&gt; parameter that is even. You will get a nice non-empty string in return." Sounds like a deal.&lt;br /&gt;&lt;br /&gt;There is probably a lot to say about contracts and how they can help developers understand their code. There are frameworks that will take these annotations and turn these into run-time checks. My interest is more in verification though. Automated program verification is really hard to do, because several undecidability results apply -- but in the words of Prof Jürgen Giesl this also means that one can always improve the state of the art. &lt;br /&gt;&lt;br /&gt;The previous time I got excited by contracts was when I had the pleasure to host Prof Peter Müller at Google where he give a talk and demo of SpecSharp. The article &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.150.2490&amp;amp;rep=rep1&amp;amp;type=pdf"&gt;Specification and Verification: The Spec# Experience&lt;/a&gt; gives a glimpse of the programming system the authors had built. An amusing quote from there: "&lt;span class="Apple-style-span" style="color: #444444;"&gt;When programmers see our demos, they often develop a romantic enthusiasm that does not correspond to veriﬁcation reality&lt;/span&gt;."&lt;br /&gt;&lt;br /&gt;Let me state that dream here: a program is made of method calls. If the compiler, or IDE, "&lt;b&gt;understands&lt;/b&gt;" the pre-conditions and post-conditions of method calls, it should be able to chain these "&lt;b&gt;facts&lt;/b&gt;" together and achieve some form of "&lt;b&gt;understanding&lt;/b&gt;" of the program. This can help developers add or change lines and get &lt;b&gt;immediate feedback&lt;/b&gt;&amp;nbsp;on whether the source code they write is &lt;b&gt;correct&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Going back to the example above: imagine writing &lt;code&gt;foo(3)&lt;/code&gt; in your IDE and having it underlined in squiggly red, with a mouse-over message stating "precondition &lt;code&gt;numChars % 2 == 0&lt;/code&gt; not satisfied".&lt;br /&gt;&lt;br /&gt;Spec# translates the pre- and postconditions into &lt;a href="http://en.wikipedia.org/wiki/Satisfiability_Modulo_Theories"&gt;Satisfiability Modulo Theories&lt;/a&gt; (SMT) problems which are then solved by the underlying engine called &lt;a href="http://research.microsoft.com/en-us/projects/specsharp/krml160.pdf"&gt;Boogie&lt;/a&gt;. Another SMT solver is Z3 which has a readable &lt;a href="http://research.microsoft.com/projects/z3/tutorial.pdf"&gt;tutorial&lt;/a&gt;. Reading up on these, it is quite striking that Spec# is working on a &lt;b&gt;real&lt;/b&gt;&amp;nbsp;programming language, and that &lt;b&gt;neat interfaces do exist&lt;/b&gt; between the layers of byte code, verification source and the nitty gritty predicate logic formulae.&lt;br /&gt;&lt;br /&gt;And then, there still is the following flaw, quoted &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.7610&amp;amp;rep=rep1&amp;amp;type=pdf"&gt;here&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;At the moment you ﬁnd an error, your brain may disappear because&lt;br /&gt;of the Heisenberg uncertainty principle, and be replaced by a new&lt;br /&gt;brain that thinks the proof is correct.&lt;br /&gt;L.A. Levin&lt;br /&gt;&lt;br /&gt;Just kidding. Robert Pollack's article is concerned with the problem that we can come up with a system that will verify our program, but we won't necessarily be able to trust it, because it is a program itself. Here is the bit that is relevant though: "&lt;span class="Apple-style-span" style="color: #444444;"&gt;My guess is that tech-&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;nologies of automated proof search will be highly developed because of economic&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;pressure for reliable hardware and software, and these, applied as tactics to proof&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;checking, will make formal mathematics a practical reality in the foreseeable fu-&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;ture.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;It seems we still have a long way to go before developers see the light in IDEs having some form of automated program verification. I have a hope that if one goes back to natural deduction style proofs, logical frameworks or simple logic programming with SLD resolution, it may be possible to write reasonable (logical) annotations and have proper support. Let (expert) programmers write &lt;b&gt;more&lt;/b&gt;. Only experimentation can show whether this is a good idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-5106653356288925783?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/5106653356288925783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=5106653356288925783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/5106653356288925783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/5106653356288925783'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2010/08/romantic-enthusiasm-for-verification.html' title='Romantic enthusiasm for verification'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-5957997255133949150</id><published>2010-08-14T16:28:00.000-07:00</published><updated>2010-08-14T16:45:48.528-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='switzerland'/><title type='text'>Good news and minarets</title><content type='html'>Good news first:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I got married to Şerife exactly one week ago : )&lt;/li&gt;&lt;li&gt;It is the blessed month of Ramadan, and my best wishes go to all who observe it.&lt;/li&gt;&lt;li&gt;the world has not ended yet.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Apart from that, today's news have been full of bad news from all over the world. Additionally, I had been reading a lot of stuff all over the web and naturally some of it had potential to pull me down (think Palestine, think victims of human trafficking). But today the Swiss news also featured Obama supporting religious freedom in the US.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I got curious about the&amp;nbsp;&lt;a href="http://www.thecordobafoundation.com/"&gt;http://www.thecordobafoundation.com/&lt;/a&gt;&amp;nbsp;and there found their journal called Arches. This proved to be quite fascinating, as the points of view expressed in those articles are so different from what one usually sees in the media. The last edition is Vol 3 Edition 5.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not all of the Arches articles are my taste. For instance, there is this Kurdish guy who represent the home-coming of PKK guerilla in Turkey (which derailed the peace process very efficiently) as the "home-coming of members of a peace group" and describes how brainwashed the Turkish people are to misunderstand this event. Well, it seems in 2010 "peace groups" sport fashionable war uniforms, even when they lay down their arms.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The one article I like most is " Understanding '&lt;b&gt;Land of War&lt;/b&gt;' and '&lt;b&gt;Land of Islam&lt;/b&gt;' " by Dr Jasser Auda, pp.41.&lt;/div&gt;&lt;div&gt;'&lt;b&gt;Land of War&lt;/b&gt;' is a concept that, unfortunately, has currency among some Muslims. For them, '&lt;b&gt;Land of War&lt;/b&gt;' is the essential clash-of-civilizations hypothesis. &amp;nbsp;This &lt;a href="http://www.columbia.edu/itc/mealac/pritchett/00islamlinks/ikram/glossary.html"&gt;glossary&lt;/a&gt; gives the definition: A land ruled by infidels that might, through war, become the "Abode of Islam."&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In essence, there really are people who believe that in the "&lt;b&gt;Land of Peace"&lt;/b&gt;&amp;nbsp;they are free to cheat or lie. Maybe they think, Muslims will "&lt;b&gt;conquer&lt;/b&gt;" this land one day, and then, only then, will it become necessary to act. It seems pretty clear that terrorists would subscribe to this idea.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It sounds silly to think of a country like Switzerland as a "&lt;b&gt;Land of War&lt;/b&gt;". You would think that Turkey, which is mostly Muslim, would not qualify. Yet, I once overheard a discussion where somebody qualified the whole country of Turkey as un-Islamic, since "the women would not wear the veil there". Uh-huh. What can one say to that? Something is pretty wrong with people who think in terms of "&lt;b&gt;Land of War&lt;/b&gt;".&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This has been refuted many times, and practicing Muslims who take their religion seriously enough to do some research should know about the falsity. Dr Auda's article is special in that it is at the same time approachable by Muslims as well as non-Muslims, and reads like a sound scholarly discourse on the topic.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, the article points out the difference between&amp;nbsp;Shari'a and Fiqh: whereas the former is an ideal (like "Justice"), the latter is a necessarily incomplete, changing attempt to achieve justice by norms and rules (like "Law"). Then he places the "&lt;b&gt;Land of War&lt;/b&gt;" concept in the realm of Fiqh. In other words, yes, there was a time and a place where learned scholars argued that outside the secure realm of the Islamic empire, things gets rough. Fiqh is and must always be adapted to social circumstances of a particular time and place. (My remark: A great book that explains why is Tariq Ramadan "Radical Reform")&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Back to the article. Auda then thinks on how the "Land of Peace" should look like. Should it be predominantly Muslim? Should it have a Muslim ruler? Should its legal system be Shari'a compliant? Is it enough for Muslims to practice their religion.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He arrives at the conclusion that the proper way of viewing things is to see "Land of Islam" as synonymous with "Land of Justice". This has its basis in the realization that the purpose of "Islamic Law" is to ensure justice and well being. This includes Muslims rights to perform "public acts of worship". Among other things, this means construction of mosques, including minarets.&lt;br /&gt;&lt;br /&gt;There, finally, is a great explanation of why many "Western" countries are better developed and why Muslims find it easier to practice their religion there. The legal systems of many so-called "Islamic countries" are not up to the task of actually achieving justice.&lt;br /&gt;&lt;br /&gt;I am willing to draw the conclusion that it absolutely does not matter whether the laws were derived from the Noble Qur'an or not: what matters is if they are achieving justice (or Shari'a). Muslims can well approximate the "divine way of living" in a secular democracy. Also in democracies, humans make errors when deriving and judging law. They introduce bugs. It seems the legal systems of "Islamic countries" are still buggy.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Democracy is not a guarantee for justice. In Switzerland, a not-so-nice bug got introduced. At the time of this writing, building minarets is still forbidden in Switzerland. People voted on this on 2009-11-29, after a big smear campaign by the SVP. On the other hand, the constitution still claims that everybody is free to practice their religion, and that everybody is equal in front of the law. Am I the only one who sees a contradiction here?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Barack Obama supported building the community center (including their mosque) near Ground Zero, on the basis that Muslims have the right to practice their religion.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-5957997255133949150?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/5957997255133949150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=5957997255133949150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/5957997255133949150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/5957997255133949150'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2010/08/good-news-and-minarets.html' title='Good news and minarets'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-8633572324969773671</id><published>2008-05-05T00:41:00.000-07:00</published><updated>2008-05-05T00:47:01.199-07:00</updated><title type='text'>first baby steps with luatex</title><content type='html'>ok, I compiled the luatex beta and was puzzled on how to run this.&lt;br /&gt;&lt;br /&gt;Then I found Luigi Scarso's &lt;a href="http://www.ntg.nl/pipermail/ntg-context/2007/026583.html"&gt;answer&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;what about&lt;br /&gt;$texmfstart texexec --luatex luatest1.tex&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What is texmfstart? No idea, but "wer sucht, der findet"&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ locate texmfstart&lt;br /&gt;/usr/local/teTeX/share/texmf.local/scripts/context/ruby/texmfstart.rb&lt;br /&gt;/usr/local/teTeX/share/texmf.tetex/scripts/context/ruby/texmfstart.rb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I do remember having played with context ones, but I do not remember whether I installed context there. Anyway, the .rb extension is for ruby, so&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ruby /usr/local/teTeX/share/texmf.local/scripts/context/ruby/texmfstart.rb texexec --luatex sheet06.tex&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;did what I wanted... mostly. It produces a .pdf but it looks very basic, the page numbers are on the top of the page, and so on. Well a good starting point nevertheless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-8633572324969773671?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/8633572324969773671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=8633572324969773671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/8633572324969773671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/8633572324969773671'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2008/05/first-baby-steps-with-luatex.html' title='first baby steps with luatex'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-253658234641116067</id><published>2008-04-06T07:30:00.000-07:00</published><updated>2008-04-06T09:23:01.602-07:00</updated><title type='text'>lost in multi-lingualization</title><content type='html'>I figured out that my multi-lingual dictionary needs a multi-lingual website.&lt;br /&gt;&lt;br /&gt;In web-design as elsewhere, i18n is quite a pain: one has to actually think what one wants before going off and doing something.&lt;br /&gt;&lt;br /&gt;For my web dictionary and its associated websites, there is one obvious requirement: the text on every page should be viewable in various languages.&lt;br /&gt;&lt;br /&gt;There are interesting links on the net on how to approach this systematically: I have found the following particularly useful:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt; the comments in W3C's q&amp;a blog article &lt;a href="http://www.w3.org/QA/2006/02/content_negotiation.html"&gt;Content Negotiation: why it is useful, and how to make it work&lt;/a&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt; the EURESCOM report &lt;a href="http://eurescom.de/~pub-deliverables/P900-series/P923/P923_brochure.pdf"&gt;Multi-lingual web sites: Best practice guidelines and architectures&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;When looking for a standard encoding of languages as strings, the &lt;a href="http://www.loc.gov/standards/iso639-2/php/code_list.php&lt;br /&gt;"&gt;three letter languages codes (ISO639-2) &lt;/a&gt; are quite enough (ISO-639-1 are the two-letter ones). Of course, despite the thing being a standard, there is some fun to be had with e.g. deu == ger.&lt;br /&gt;&lt;br /&gt;Apart from deciding, which languages to support, there is also a user interface question, and for my website, I consider this the most important. In times of Google, content can also be found if your website has a lousy user interface, but since I am looking for something that is fun to use interactively, usability takes priority.&lt;br /&gt;&lt;br /&gt;That is why I need to ask myself: how would one select between languages? I think the best is to go with a hybrid approach:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;   &lt;li&gt;have URIs of the shape domain/language-code/path and rewrite them to domain/path.language-code.extension (the dispatching described in the comments to the W3C article).&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;additionally have a footer with links (view page in language1, ..., languageN)&lt;/li&gt;&lt;br /&gt;   &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Pages should not be very long, so that the footer is visible. For added fun, I can later go into having facebook's wall-to-wall (two pages displayed side-by-side) layout to see the same page in two different languages, for translation and language-learning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-253658234641116067?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/253658234641116067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=253658234641116067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/253658234641116067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/253658234641116067'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2008/04/lost-in-multi-lingualization.html' title='lost in multi-lingualization'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-9121438919244321703</id><published>2007-07-03T23:04:00.000-07:00</published><updated>2007-07-03T23:35:37.660-07:00</updated><title type='text'>asp.net, and computerclubzwei</title><content type='html'>About to start a web app... coming from a Scala and Java background, but my web hoster offers me php and asp.net -- which poison is tastier? I was set to go for php, although I don't like the language much. So I thought I'd give this asp.net stuff a try.&lt;br /&gt;&lt;br /&gt;For my first timid steps, I was happy to have read the &lt;a href="http://de.wikipedia.org/wiki/ASP.net"&gt;German Wikipedia entry&lt;/a&gt;, and the&lt;br /&gt; beginning &lt;a href="http://de.wikibooks.org/wiki/Webentwicklung_mit_ASP.NET"&gt;wikibook  "Webentwicklung mit ASP.NET"&lt;/a&gt;. This had a link to &lt;a href="http://www.microsoft.com/germany/msdn/vstudio/express/default.mspx"&gt;visual studio web express&lt;/a&gt;, which is free, and it rocks as an IDE (I am a big fan of Microsoft IDEs, although I do everything to avoid owning a Windows OS). I get curious about MonoDevelop, all this Emacs juggling is getting boring sometimes.&lt;br /&gt;&lt;br /&gt;About asp.net proper, the difference in complexity seems ridiculous compared to php... but this is more a psychological thing. While I quickly hacked a phpinfo.php to test that scripts were properly executed on the server, asp.net development first started by installing an IDE. There are quite some concepts to learn, and here I lost interest. Compared to the jsp world, the "usine à gaz" factor seems the same (I also lost interest in JSP 2, my last activity was a struts-1 webapp).&lt;br /&gt;&lt;br /&gt;Out of curiosity, I will try to connect to the mysql database on asp.net, and continue some experiments... and if that works fine, I might stick with it and get used to IDE land again.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;Growing up in Germany, I have at least one seen a show called "computer club" - although I was too young to appreciate it back then. Apparently, they have recently started podcasting on their new site &lt;a href="http://www.cczwei.de/index.php"&gt;cczwei&lt;/a&gt;. It's fun to listen to this professionally produced piece of audio-layman-tech-journalism - for one who enjoys people talking about technical things in a simple manner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-9121438919244321703?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/9121438919244321703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=9121438919244321703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/9121438919244321703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/9121438919244321703'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2007/07/aspnet-and-computerclubzwei.html' title='asp.net, and computerclubzwei'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-4983465750312156733</id><published>2007-06-25T23:41:00.000-07:00</published><updated>2007-06-25T23:48:20.041-07:00</updated><title type='text'>Code-follows-Type</title><content type='html'>Adriaan writes up something on &lt;a href="http://www.cs.kuleuven.be/~adriaan/?q=cft_intro"&gt;Code-follows-Type&lt;/a&gt; programming. It's a neat technique that has a killer application: automatically generating pickling and unpickling code from your class definitions - without code generation, without reflection, without anything... wait, it says it only works for "representable" types.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-4983465750312156733?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/4983465750312156733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=4983465750312156733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/4983465750312156733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/4983465750312156733'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2007/06/adriaan-writes-up-something-on-code.html' title='Code-follows-Type'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-115425824039511159</id><published>2006-07-30T03:49:00.000-07:00</published><updated>2006-07-30T04:17:20.433-07:00</updated><title type='text'></title><content type='html'>Again, a web designer might be interested in &lt;br /&gt;&lt;a href="http://code.google.com/webstats/index.html"&gt;Google's Web Authoring Statistics&lt;/a&gt; for best practices.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;There are far too many articles about the GWT, but here is &lt;a href="http://ajax.sys-con.com/read/225045.htm"&gt;Dion Hinchcliffe's analysis of GWT's service abstraction&lt;/a&gt;.&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-115425824039511159?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/115425824039511159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=115425824039511159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/115425824039511159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/115425824039511159'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/07/again-web-designer-might-be-interested.html' title=''/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-115333142564460475</id><published>2006-07-19T10:41:00.000-07:00</published><updated>2006-07-19T10:50:25.656-07:00</updated><title type='text'></title><content type='html'>always good to remember some &lt;a href="http://learningtheworld.eu/2006/best-practices/"&gt;best practices in web development&lt;/a&gt;.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Ralf Laemmel and Erik Meijer take a head-on jump into &lt;a href="http://homepages.cwi.nl/~ralf/xo-impedance-mismatch/"&gt;xml object mismatch&lt;/a&gt;. More (or less) data binding.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;I still haven't gotten to look &lt;a href="http://microformats.org/wiki/hcalendar"&gt;microformats&lt;/a&gt; and wonder if I need to.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;This &lt;a href="http://lamp.epfl.ch/~emir/projects/scalaxbook/scalaxbook.docbk.html"&gt;Scala XML documentation&lt;/a&gt; needs some updating.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-115333142564460475?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/115333142564460475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=115333142564460475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/115333142564460475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/115333142564460475'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/07/always-good-to-remember-some-best.html' title=''/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-115289952317854316</id><published>2006-07-14T10:40:00.000-07:00</published><updated>2006-07-14T10:52:03.210-07:00</updated><title type='text'>different takes on data binding</title><content type='html'>&lt;p&gt;&lt;br /&gt;Some time ago, &lt;a href="http://www.ftponline.com/vsm/2003_05/magazine/features/dollard/"&gt;Kathleen Dollard showed how to generate classes from an XML Schema using XSLT&lt;/a&gt;. I dislike both schema and XSLT, but I would understand why someone would need to use both technologies and have respect for everybody that plunges in that hell. However all those technologies together might serve to describe the problem rather than the solution&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Pull parsing examples, also a while ago, is often demonstrated as a fast way to do data binding. We can find &lt;a href="http://dev2dev.bea.com/pub/a/2004/01/pullparsing.html"&gt;Chris Fry's writeup on XML pull parsing&lt;/a&gt;. It seems&lt;br /&gt;&lt;a href="http://javaboutique.internet.com/tutorials/stax/"&gt;Pull parsing will be available in JDK6&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This pull parsing stuff ultimately looks better than all other APIs, because all the other ones can be implemented on top of this one.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-115289952317854316?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/115289952317854316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=115289952317854316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/115289952317854316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/115289952317854316'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/07/different-takes-on-data-binding.html' title='different takes on data binding'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-115021474820029644</id><published>2006-06-13T08:51:00.000-07:00</published><updated>2006-06-13T14:06:09.656-07:00</updated><title type='text'>typed scripting? typescript</title><content type='html'>&lt;p&gt;&lt;br /&gt;Types are good, but a language aiming to resemble JavaScript should leave type annotations optional wherever possible. Palsberg and Schwartzbach have something to say about type inference for object oriented programs.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;What would types be good for? There's all those "message-not-understood" (&lt;a href="http://developer.mozilla.org/es4/spec/chapter_3_execution_model.html#strict_verification"&gt;and so on&lt;/a&gt;), but there is also fancier stuff like Session types for channels, or regexp-like types for semistructured data.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;JavaScript is object based, but not class based. Abadi and Cardelli's "A Theory of Objects" is the standard reference on object calculi. &lt;a href="http://slurp.doc.ic.ac.uk/pubs.html#typeinferenceforjavascript-ecoop05"&gt;"Type inference for JavaScript"&lt;/a&gt; introduces a calculus for modeling JavaScript.  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Castagna provides an account on overloading in the publication that came out of his thesis, titled&lt;br /&gt;"Object-Oriented Programming: A Unified Foundation". The thing with overloading is that it might give a more precise type to pattern matching statements, an idea that haunts me since ages.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-115021474820029644?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/115021474820029644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=115021474820029644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/115021474820029644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/115021474820029644'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/06/typed-scripting-typescript.html' title='typed scripting? typescript'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-114977077766364686</id><published>2006-06-08T05:38:00.000-07:00</published><updated>2006-06-08T08:17:30.883-07:00</updated><title type='text'>JavaScript2</title><content type='html'>&lt;p&gt;&lt;br /&gt;Brendan Eich's XTech 2006 keynote &lt;a href="http://developer.mozilla.org/presentations/xtech2006/javascript/"&gt;JavaScript 2 and the Future of the Web&lt;/a&gt; mentions some deltas to the language. This is &lt;a href="http://lambda-the-ultimate.org/node/1530"&gt; warmly welcomed on LtU&lt;/a&gt;, who add a new JavaScript department.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;One of the typing experts sitting int the committee, Cormac Flanagan, has worked on &lt;a href="http://sage.soe.ucsc.edu/sage-tr.pdf"&gt;SAGE: Practical Hybrid type checking for Expressive Types and Specifications[pdf]&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Not to be confounded with ECMAScript 4, the next version of JavaScript 1, designed by committee ECMA TC39TG1. They get &lt;a href="http://www.mozilla.org/js/language/es4/index.html"&gt;proposals from Mozilla guys&lt;/a&gt;, and recently &lt;a href="http://developer.mozilla.org/es4/"&gt;published their Wiki&lt;/a&gt;, which also is &lt;a href="http://lambda-the-ultimate.org/node/1543"&gt;half-heartedly discussed on LtU&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-114977077766364686?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/114977077766364686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=114977077766364686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114977077766364686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114977077766364686'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/06/javascript2.html' title='JavaScript2'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-114893681031837432</id><published>2006-05-29T13:31:00.000-07:00</published><updated>2006-05-29T14:06:50.333-07:00</updated><title type='text'>why those books? discussions with friends</title><content type='html'>&lt;b&gt;Edward Angel. OpenGL(tm): a Primer. ISBN 0-201-74186-5&lt;/b&gt; A fascination with NeuroScience and displaying 3d graphics, ideally in a web browser. Unfortunately, we are missing a  Canvas3D that supports this stuff. For the moment, there are Java bindings, and &lt;a href="http://lwjgl.org/"&gt;lwjgl&lt;/a&gt; looks like the way to go.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;David Flanagan. JavaScript: The Definitive Guide, Fourth Edition. ISBN 0-596-00048-0&lt;/b&gt; Actually I don't remember why that book is here, I get all the info I want from the net.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;John C. Mitchell. Foundations for Programming Languages. ISBN 0-262-13321-0&lt;/b&gt;The style and notation of this book are of a beauty that makes me want to read it over and over again. Although I don't really have spare cycles to do more foundational stuff, the proofs are spelled out in a very clear, yet concise manner and it is inspiring.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Benjamin Pierce, ed. Advanced Topics in Types and Programming Languages. ISBN 0-262-16228-8&lt;/b&gt; Here, I started with the chapter of typed assembly language, also with an implementation actually. Wouldn't it be useful to have a low-level VM for iron that interprets typed assembly code? and have an x86 backend at some point. &lt;br /&gt;&lt;br /&gt;When chatting with my chap about my final project, I was surprised how rational I could tell him the objectives and problems that I am facing, things I have been trying to find out for a long time. And there I am just communicating it as if I had known it all the time. My reluctance to use *the language*, the advantages of using HTML for user interfaces, the insights into GWT and the architectural sketch and constraints of the system.&lt;br /&gt;&lt;br /&gt;When receiving another chap's email I'm surprised at his argument for dynamic typing having become more differentiated, preferring LISP over Python. And it somehow makes sense, because uniform containers (like sequences and hashtables) seems to be what most of my obsession with iron is about as well. His CLOS speak is beyond me but I recall from the book that I forgot to mention that setting up some object system in those languages is not very difficult.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Abelson and Sussman. Structure and Interpretation of Computer Programs. ISBN 0-262-51087-1 &lt;/b&gt; Never made it to those later chapters, where writing a scheme compiler is given as an exercise. Opening this book again is due to my interest in doing dynamic typing via tags. However it just clashes with the idea of doing static checking for regular expression types. What gives? There should be some program analysis and type inference.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Benjamin Pierce. Types and Programming Languages. ISBN 0-262-16209-1&lt;/b&gt; There's something about recursive types that makes me return to this book. It stems from my obsession of regular expression types for sequences. The iron language is supposed to have sequences as primitives, and do some type-checking for an xsd-extension based object-class system. Also, the type inference idea mentioned above can be nourished from this book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-114893681031837432?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/114893681031837432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=114893681031837432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114893681031837432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114893681031837432'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/05/why-those-books-discussions-with.html' title='why those books? discussions with friends'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-114850714841333342</id><published>2006-05-24T14:42:00.000-07:00</published><updated>2006-05-24T14:45:48.426-07:00</updated><title type='text'>forging templates Google style</title><content type='html'>Well, not surprisingly Google have &lt;a href="http://www.sourceforge.net/projects/goog-ctemplate"&gt;their own way of templatin.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-114850714841333342?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/114850714841333342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=114850714841333342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114850714841333342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114850714841333342'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/05/forging-templates-google-style.html' title='forging templates Google style'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-114831467722735657</id><published>2006-05-22T09:01:00.000-07:00</published><updated>2006-05-24T14:46:44.430-07:00</updated><title type='text'>forging hypertext templates</title><content type='html'>The good old hypertext. What have they done to you, pal? Just look at you. JSPed all over. And all those taglibs hanging down your front.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean" %&gt;&lt;br /&gt;&amp;lt;%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %&gt;&lt;br /&gt;&amp;lt;%@ taglib uri="/WEB-INF/tld/struts-logic.tld" prefix="logic" %&gt;&lt;br /&gt;&amp;lt;!--Logon_Block_Start--&gt;&lt;br /&gt;&amp;lt;html:form action="/loginlogout/login" focus="username"&gt;&lt;br /&gt;  &amp;lt;TABLE WIDTH="&amp;lt;bean:message key="block.size.x"/&gt;" &lt;br /&gt;   ...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;No, no, some other I may have done this to you myself a long time ago, but not again. &lt;br /&gt;&lt;a href="http://article.gmane.org/gmane.comp.lang.scala/1770/match=jsp"&gt;Joel is right&lt;/a&gt;, so facade elements with attributes and ognl and tapestry style it shall be.&lt;br /&gt;&lt;br /&gt;editable, viewable, maybe even validatable and bindable. No use to go over the top with WebObjects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-114831467722735657?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/114831467722735657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=114831467722735657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114831467722735657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114831467722735657'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/05/forging-hypertext-templates.html' title='forging hypertext templates'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-114805334657959112</id><published>2006-05-19T08:33:00.000-07:00</published><updated>2006-05-19T08:42:26.586-07:00</updated><title type='text'>so you want to get web programming right, eh?</title><content type='html'>Programming should be done in a decent language. That language should be the same on client and server (and I won't tell you why).&lt;br /&gt;&lt;br /&gt;All web scripting somehow started with &lt;a href="http://www.mozilla.org/js/language/index.html"&gt;JavaScript&lt;/a&gt;. You could embed it on your server side if you really want to.&lt;br /&gt;&lt;br /&gt;One can target JavaScript (and also targets ActionScript) with the &lt;a href="http://haxe.org"&gt;haXe language&lt;/a&gt;. It also has a server component, going through an Apache plugin.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://homepages.inf.ed.ac.uk/wadler/links/"&gt;Links language&lt;/a&gt; promises to compile from a single source database updates and Javascript bits in your page.&lt;br /&gt;&lt;br /&gt;OTOH, one can get a nice language, XML capabilities and leverage the whole Java shebang using the &lt;a href="http://scala.epfl.ch"&gt;Scala language&lt;/a&gt;. However, the whole backend-multiplexing thing is missing as of yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-114805334657959112?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/114805334657959112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=114805334657959112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114805334657959112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114805334657959112'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/05/so-you-want-to-get-web-programming.html' title='so you want to get web programming right, eh?'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28320851.post-114795223118735897</id><published>2006-05-18T04:23:00.000-07:00</published><updated>2006-05-18T04:37:11.196-07:00</updated><title type='text'>so you want to start a blog, eh?</title><content type='html'>No meta-discussion, no navel-gazing, no propaganda. No technical details.&lt;br /&gt;&lt;br /&gt;Once again scanning the web for frameworks, I got lost in  &lt;a href="http://myfaces.apache.org/"&gt;Apache MyFaces&lt;/a&gt; and &lt;a href="http://jakarta.apache.org/tapestry/"&gt;Tapestry&lt;/a&gt; and of course &lt;a href="http://code.google.com/webtoolkit/"&gt;Google Web Toolkit&lt;/a&gt; the new kid on the block.&lt;br /&gt;&lt;br /&gt;Over lunch, a discussion on JavaScript turns onto the XML lane and I realize that is another something that is missing in that language, just like actors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28320851-114795223118735897?l=bq9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bq9.blogspot.com/feeds/114795223118735897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28320851&amp;postID=114795223118735897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114795223118735897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28320851/posts/default/114795223118735897'/><link rel='alternate' type='text/html' href='http://bq9.blogspot.com/2006/05/so-you-want-to-start-blog-eh.html' title='so you want to start a blog, eh?'/><author><name>Burak Emir</name><uri>http://www.blogger.com/profile/01651698653168460072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
