tag:blogger.com,1999:blog-52460273345519237382024-03-14T01:01:28.633-07:00armstrong on softwareMainly about Erlang,
programming,
and anything else that takes my fancy.Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-5246027334551923738.post-30517060529079718852012-06-26T12:41:00.000-07:002012-06-26T12:41:11.449-07:00Where's my cheeseImperative programming is pretty difficult.
The main problem is that once you've put something somewhere you expect to find it where you put it.
βHej, who moved my cheese?β you're thinking.
If you put a chunk of cheeses in the fridge, its nice if you can find it where you put it. You put things in places, and later you expect to find them where you put them. What this boils down Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com0tag:blogger.com,1999:blog-5246027334551923738.post-9184954634466171722012-06-26T04:17:00.000-07:002012-06-26T04:17:49.785-07:00What happened to my quotes?How come Google and blogger.com can't get quote marks right?
In English we use β for a start quote mark and β for a ending quotes.
But all Google's editors insert a " quote when you type the quote symbol.
What ever happened to typography?Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com0tag:blogger.com,1999:blog-5246027334551923738.post-84057502284894872882012-06-26T04:10:00.000-07:002012-06-26T04:10:02.451-07:00I recover my blogI managed to get my blog back. Admittedly it's not the original format but at least I can view all the old content.
The problem appears to be in the templates. I tried using one of Goggles "Dynamic Views" but these just made my blog unreadable.
I have now reverted to one of the
"Simple" Templates. I guess simple means "I can now read my blog."
Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com0tag:blogger.com,1999:blog-5246027334551923738.post-49665034585962924622012-06-21T12:52:00.002-07:002012-06-22T01:51:26.004-07:00Sorry about the blogThis blog is now totally fucked up. If you click on any of the old articles all you'll see is the beginning.All comments seem to be broken as well.I changed to the new templates.Result - a mess.Can I revert to the old blog - No. There is no revert button.Thanks Google.To my readers. Sorry about this. I'll try and fix the content on a non-google site.Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com1tag:blogger.com,1999:blog-5246027334551923738.post-31965250773457077372009-12-16T03:25:00.001-08:002012-06-22T01:52:00.294-07:00Comet is dead long live websocketsI've just had a chance to play with the implementation of websocketsin Googles Chrome browser. This post started me off.After a small amount of experimentation I was able to make Erlang talk to a web page using pure asynchronous message passing.I think this means the death of the following technologies:cometlong-pollAJAXkeep-alive socketsAll the above are merely hacks, inadequate ways of Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com2tag:blogger.com,1999:blog-5246027334551923738.post-31964786428521258312009-06-29T11:15:00.000-07:002009-06-29T11:26:57.920-07:00Content EditableI've been playing with the HTML contentEditable mode in Firefox.One word awesome.I quickly managed to put together the basis of a seamless editor. This is described in a seven part article.Part1 - toggling content editablePart2 - Adding some stylePart3 - Adding editing buttonsPart4 - A seamless structure editorPart5 - All the buttonsPart6 - Storing the results foreverPart7 - Integration with Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com2tag:blogger.com,1999:blog-5246027334551923738.post-11652642982127408492009-02-15T02:46:00.000-08:002009-02-15T03:34:49.318-08:00JSON protocols (part 1) For a long time I have been interested in describing protocols. In 2002 I published a contract system called UBF for defining protocols. This scheme was never widely adopted - perhaps it was just to strange...I have revised UBF and recast it in a form which I call JSON Protocols - since JSON is widely implemented, this method of described protocols might be more acceptable.What's the problem?Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com12tag:blogger.com,1999:blog-5246027334551923738.post-35077654550896054332009-01-28T01:14:00.000-08:002009-01-28T04:08:32.230-08:00Micro Lightweight Unit TestingI'm often asked the question "what unit testing framework do you use?" The answer is usually I don't, but I do use a form of micro testing that is built into Erlang.In Erlang, every assignment of the form Lhs = Rhs where the Lhs is a ground-term and Rhs is a non-ground term can be viewed as an assertion, or unit test, since it can possibly fail.So when we write: {ok, S} = file:open("filename"Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com4tag:blogger.com,1999:blog-5246027334551923738.post-83186921864296076662008-07-10T00:39:00.000-07:002008-07-10T03:48:23.289-07:00UBF and VM opcocde design UBF is a data encoding that allows structured terms (rather like XML) to be sent over the network. It also includes a protocol checking scheme to automatically determine if sequences of typed messages follow a particular protocol.This blog entry was stimulated by this posting on the erlang mailing list.One of the basic ideas of UBF of was to send programs not data structures. The programs were Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com7tag:blogger.com,1999:blog-5246027334551923738.post-47242955217042855712008-06-28T13:53:00.000-07:002008-11-15T00:49:12.220-08:00Itching my programming nervePhoto: oreillygmtI've just got back from the first ever commercial Erlang conference. Some 40 talks in two days all related in some way or other to Erlang. It was a chance to meet old friends, make new friends and connect people together in the hope that new synergy effects would arise.The most exciting thing was the emergence of what I think might be the first killer applications written in Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com6tag:blogger.com,1999:blog-5246027334551923738.post-73095154416116343782008-06-24T11:28:00.000-07:002008-06-24T12:53:06.998-07:00Invasion of PrivacyOn 18 June the Swedish Parliament passed a law giving sweeping new powers to the FRA (Swedish Defense Radio Establishment) allowing them to wiretap people in Sweden through phone conversations, email, text messages and more.All people in Sweden using electronic communication can have their communication monitored despite the fact that they are not suspected of committing any crime.In my view thisJoe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com12tag:blogger.com,1999:blog-5246027334551923738.post-27675389810430387052008-05-26T04:41:00.001-07:002008-05-27T07:03:17.367-07:00The Road we didn't go downI've been following an interesting discussion on the Erlang mailing list where Steve Vinoski and friends have been telling us what's wrong with RPC.The discussion started on 22 May, the general topic of conversation was the announcement that facebook had deployed a chat server written in Erlang.In one of the posts Steve said:"What all those years of CORBA taught me, BTW, is that RPC, for anumber Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com16tag:blogger.com,1999:blog-5246027334551923738.post-37607435549358551102007-07-19T02:21:00.000-07:002007-07-19T03:52:16.543-07:00Scalable fault-tolerant upgradable systems Part 1let's talk about servers which are:Scalablefault-tolerant Dynamically UpgradableQ: Are these really the same thing?A: Well not really, but they are very similar.A system that is fault-tolerant can easily be made scalable and easily made so that we can do in-service upgrade.Here's how:Algorithm1.In-service Upgrade.Assume we have N nodes running version one of a program - we want to upgrade to Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com2tag:blogger.com,1999:blog-5246027334551923738.post-62556490999842626302007-03-03T09:26:00.000-08:002007-03-03T11:07:04.475-08:00Hasta La Vista, babyBut what did he say when he came back?I think he just grunted.I've been busy. With this. But now I'm back (perhaps not every week since there are three more chapters to write).When I've started this Blog the idea was "blog at least once a week." Nobody will read a blog unless there's content, once a week. Just say something, have a point of view.That's easy - once a week - easy.Said he.A while Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com10tag:blogger.com,1999:blog-5246027334551923738.post-23717910668751037012006-09-28T00:01:00.000-07:002006-09-28T00:15:52.003-07:00Why I often implement things from scratchOnce upon a time there was an Erlang programmer who needed an FTP server running on one of the hosts in a private network. In fact he didn't need an FTP server, he just needed to transfer files between a central server and his client machine, but he thought that he needed an FTP server to do this.He searched for FTP servers, and indeed found several of them. They had to be free of course, Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com6tag:blogger.com,1999:blog-5246027334551923738.post-57495402092970102382006-09-11T23:01:00.000-07:002006-09-11T23:11:00.401-07:00Pure and simple transaction memoriesNow for a technical article.How can several parallel programs maintain a consistent view of state. By this I mean how can two programs, possibly in different countries, manipulate common state variables in a consistent manner? How can they do so in a way that does not involve any locking?The answer is surprisingly simple and incredibly beautiful and makes use of something called a transaction Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com13tag:blogger.com,1999:blog-5246027334551923738.post-9985811032853183582006-09-11T06:57:00.000-07:002006-09-11T07:13:34.187-07:00Erlang meets SmalltalkHere I am evangelising on the right.Last Thursday I gave an invited talk on Erlang at the European Smalltalk Users Group meeting in Prague. This was a chance to meet hard-core members of the Smalltalk community.Now I must admit I rather like Smalltalk - it's one of those language that just feels right. I like the fact that the core language is small and easy to learn and the set of concepts Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com0tag:blogger.com,1999:blog-5246027334551923738.post-59134659638636510592006-09-01T08:31:00.000-07:002006-09-01T08:58:53.651-07:00Why I don't like shared memoryIn my last blog concurrency is easy I wrote about a simple model for programming concurrent systems. When you write a blog you have to think about the target audience and what level you want to pitch the blog at. Should it be technically advanced, or should it popularise the ideas you want to talk about?I chose to talk about concurrency in a decidedly non-technical manner, I thought I'd use the Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com25tag:blogger.com,1999:blog-5246027334551923738.post-51008497986923681782006-08-23T00:14:00.000-07:002006-08-23T00:21:58.951-07:00Concurrency is easyWe understand concurrencyA deep understanding of concurrency is hard-wired into our brains. We react to stimulation extremely quickly, in a part of the brain called the amygdala, without this reaction system we would die. Conscious thought is just too slow, by the time the thought "hit the brakes" has formed itself, we have already done it.On a motorway, I mentally track the positions of dozensJoe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com20tag:blogger.com,1999:blog-5246027334551923738.post-49253153511541122652006-08-22T06:39:00.000-07:002006-08-22T06:41:11.778-07:00Making Money from ErlangLast Friday I had lunch with Jane Walerud.Jane is one of the unsung heroines of the Erlang story. She was the first entrepreneur to recognise that having a better programming technology gave commercial advantages that could be turned into money.Jane was the first entrepreneur to recognise the commercial value of Erlang and form a new company that would eventually earn over USD 100 million from Joe Armstronghttp://www.blogger.com/profile/13842732706414838736noreply@blogger.com6