<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Thunderbird on despatches</title><link>https://icle.es/tags/thunderbird/</link><description>Recent content in Thunderbird on despatches</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 20 Jun 2025 09:25:00 +0100</lastBuildDate><atom:link href="https://icle.es/tags/thunderbird/index.xml" rel="self" type="application/rss+xml"/><item><title>Breaking Software Down</title><link>https://icle.es/2008/12/15/breaking-software-down/</link><pubDate>Mon, 15 Dec 2008 15:53:43 +0000</pubDate><guid>https://icle.es/2008/12/15/breaking-software-down/</guid><description>&lt;p>&lt;a href="http://www.codinghorror.com/blog/archives/000987.html" title="Tending Your Software Garden">Jeff Atwood likens software development to tending a garden.&lt;/a>
I can relate to this. In fact, I would like to ask, if you have a nice plant in
one of your gardens, how complicated is it to &amp;ldquo;copy&amp;rdquo; that across to another one?&lt;/p>
&lt;p>I realise that I am moving away from the analogy here but there is an important
concept here. Libraries were born out of the desire to share and distribute code
to be re-used.&lt;/p>
&lt;p>The idea for
&lt;a href="http://en.wikipedia.org/wiki/Remote_procedure_call" title="Remote Procedure Call">Remote Procedure Calls&lt;/a>
dates as far back as 1976. Microsoft brought along
&lt;a href="http://en.wikipedia.org/wiki/Object_Linking_and_Embedding" title="Object Linking and Embedding">OLE&lt;/a>
and then
&lt;a href="http://en.wikipedia.org/wiki/Component_Object_Model" title="Component Object Model">COM&lt;/a>
made this more generic and better.&lt;/p>
&lt;p>RPC is widely in use these days and there are several other mechanisms for inter
process communication including
&lt;a href="http://en.wikipedia.org/wiki/CORBA" title="Common Object Request Broker Architecture">CORBA&lt;/a>,
&lt;a href="http://en.wikipedia.org/wiki/REST" title="Representational State Transfer">REST&lt;/a> &amp;amp;
&lt;a href="http://en.wikipedia.org/wiki/SOAP_%28protocol%29" title="Simple
Object Access Protocol">SOAP&lt;/a>.&lt;/p></description><content:encoded><![CDATA[<p><a href="http://www.codinghorror.com/blog/archives/000987.html" title="Tending Your Software Garden">Jeff Atwood likens software development to tending a garden.</a>
I can relate to this. In fact, I would like to ask, if you have a nice plant in
one of your gardens, how complicated is it to &ldquo;copy&rdquo; that across to another one?</p>
<p>I realise that I am moving away from the analogy here but there is an important
concept here. Libraries were born out of the desire to share and distribute code
to be re-used.</p>
<p>The idea for
<a href="http://en.wikipedia.org/wiki/Remote_procedure_call" title="Remote Procedure Call">Remote Procedure Calls</a>
dates as far back as 1976. Microsoft brought along
<a href="http://en.wikipedia.org/wiki/Object_Linking_and_Embedding" title="Object Linking and Embedding">OLE</a>
and then
<a href="http://en.wikipedia.org/wiki/Component_Object_Model" title="Component Object Model">COM</a>
made this more generic and better.</p>
<p>RPC is widely in use these days and there are several other mechanisms for inter
process communication including
<a href="http://en.wikipedia.org/wiki/CORBA" title="Common Object Request Broker Architecture">CORBA</a>,
<a href="http://en.wikipedia.org/wiki/REST" title="Representational State Transfer">REST</a> &amp;
<a href="http://en.wikipedia.org/wiki/SOAP_%28protocol%29" title="Simple
Object Access Protocol">SOAP</a>.</p>
<p>I don&rsquo;t think software is broken down into small enough components. *nix is
great in that you can tag a whole bunch of commands together on the command line
to do some amazing things. I have personally piped data through a dozen or so
commands and scripts to do some interesting things.</p>
<p>If we could break everything down into individual components that could be
linked together, we would have a massive arsenal of interoporable tools that
each user can pick and choose to put together very powerful solutions.</p>
<p>How many times have you found a piece of software that does one thing really
well, but fails in something else. Then found another piece of software that
does the other thing really well.</p>
<p>For example, the extensibility of
<a href="http://www.mozilla.org/firefox" title="Firefox">Firefox</a> is fantastic but I love the
rendering of <a href="http://www.apple.com/safari/" title="Safari Web Browser">Safari</a>. I love
the Contact Management within
<a href="http://projects.gnome.org/evolution/" title="Evolution">Evolution</a> and the Mail
capabilities of <a href="http://www.mozilla.org/thunderbird" title="Thunderbird">Thunderbird</a>.</p>
<p>Why don&rsquo;t we break each software down into each of it&rsquo;s individual components
(and I am not talking about libraries here) and allow them to be deployed as
services usable by other pieces of software.</p>
<p>In other words, release the contact management capabilities of Evolution as a
product of it&rsquo;s own right with a pre-defined API that any application can link
into (including perhaps a web interface). Release the Mail management component
of Thunderbird as a service, Release GUI&rsquo;s as a component. Then we can pick any
GUI we want, link into a specific mail component and another addressbook
component.</p>
<p>Do one thing and do it well. In fact, let&rsquo;s take it one step further and release
a public API for each software component - an API for Mail, one for Contact
Management and so on.</p>
<p>Each software component can then be a black box that delivers this API.</p>
<p>Choice can be a bad thing if it makes it difficult to choose -
<a href="http://subclipse.tigris.org" title="Subclipse">Subclipse</a> vs
<a href="http://www.eclipse.org/subversive" title="Subversive">Subversive</a> is a good example
of this. Let us however, not confuse choice with flexibility.</p>
<p>Let&rsquo;s say that you want to find all the files within a folder modified within
the last 3 days containing the text &ldquo;abracadabra&rdquo; and then replace all
occurences in those files of the world &ldquo;super&rdquo;  with &ldquo;hyper&rdquo;.</p>
<p>To do this in linux, all you would do is chain find (to identify files modified
in the last 3 days), grep (to identify only the files that contain
&ldquo;abracadabra&rdquo;) and sed (to do the replacement).</p>
<p>If you know these commands well enough, you could chain something together in
half a minute or so. You could probably figure out how to do this with the
search tools in Windows within a minute or so but where this really shines is if
there are thousands of files that needs to be processed. With other search
tools, you would have to wait for the original search results to be returned
before running to replace operation. This takes up the users time.</p>
<p>With the chaining of commands, I have run it and worked on something else while
it completes.</p>
<p>Let me visualise a brave new world:</p>
<p>In this world, all software would be interoperable components. For example,
there would be components for:</p>
<ul>
<li>Mail account management (Perhaps genericised into configuration management)</li>
<li>Text composition (usage for mail, documents, plain text et al)</li>
<li>Text reading (again, usable for mail, documents, plain text et al)</li>
<li>Spam Filtering (already available to some extent)</li>
<li>Contact Management (optionally linked into organisation&rsquo;s LDAP server)</li>
<li>Task Management (Standalone
<a href="http://www.eclipse.org/mylyn/" title="Eclipse - Mylyn">Mylyn</a> if you know the
product)</li>
<li>Scheduling (or calendering if you prefer that term)</li>
</ul>
<p>If all of these components were interoperable, then there would a
<a href="http://en.wikipedia.org/wiki/Graphical_user_interface" title="Graphical User Interface">GUI</a>
that is generic and could bring all of these together. In this way, the people
working on each of the components could concentrate on doing one thing and one
thing well.</p>
<p>If we then start working on public API&rsquo;s in a collaborative fashion, each of the
component could be fleshed out to be as flexible and complete as necessary to
gain maximum benefit.</p>
<p>If these components provided the services as a network based API, it would also
allow for the components to be distributed across a network providing redundancy
and efficiency. This makes it easier to turn each desktop into more of dump
terminal concentrating purely on user interaction and getting closer to the
<a href="http://drone-ah.com/2008/12/12/invisible-interface/" title="Invisible Interface">invisible interface.</a></p>
<p>Software as a service has taken a step in the right direction. Can we take a
leap and have software component as a service&hellip;</p>]]></content:encoded></item><item><title>Design</title><link>https://icle.es/2008/12/12/design/</link><pubDate>Fri, 12 Dec 2008 16:42:37 +0000</pubDate><guid>https://icle.es/2008/12/12/design/</guid><description>&lt;p>Admitting to being a techie - I have often overlooked design. In fact, I have
often explained to (potential) clients, using the analogy of a ferrari that we
make the engine and everything else work while somebody else makes it look
gorgeous. For me, how something looks was largely irrelevant - as long as it
worked well.&lt;/p>
&lt;p>This explains why, for a long time, I used a fairly bland desktop environment.
My desktop itself was just pure black with no wallpaper. Ironically, I would
remove all the icons, so it would be pure black and nothing else.&lt;/p></description><content:encoded><![CDATA[<p>Admitting to being a techie - I have often overlooked design. In fact, I have
often explained to (potential) clients, using the analogy of a ferrari that we
make the engine and everything else work while somebody else makes it look
gorgeous. For me, how something looks was largely irrelevant - as long as it
worked well.</p>
<p>This explains why, for a long time, I used a fairly bland desktop environment.
My desktop itself was just pure black with no wallpaper. Ironically, I would
remove all the icons, so it would be pure black and nothing else.</p>
<p>This should have tipped me off on my own desire for design. I thought my desire
for black stemmed from the &ldquo;good old&rdquo; days of DOS when the screen was black and
my love for the linux terminal. As an aside, I used to reconfigure the terminal
windows in X to have a white on black background as well - so much better for
the eyes. In fact, I still don&rsquo;t understand why everyone uses a white background
for terminals and such like. Paper was white because that was easier. There is
really no reason for the screen to be white too&hellip;</p>
<p>Now, this was before I bumped into
<a href="http://www.enlightenment.org/" title="Beauty at your fingertips">Enlightenment</a> (at
this time, it was E16) and to put it bluntly, I was captivated. This was
absolutely gorgeous. Fairly unusable since I was used to
<a href="http://www.gnome.org/" title="The Free Software Desktop Project">GNOME</a> and of course
Microsoft Windows. I thoroughly enjoyed this until it became more of a
distraction&hellip;</p>
<p>I ended up reconfiguring GNOME to be prettier - in fact, I had the Mac OS X
theme for a while which I enjoyed.</p>
<p>I then dabbled with E17 and it was absolutely gorgeous - E16 paled in
comparison. I ran into a bug where some java applications would jump a few
pixels when changing the decorations. This was a real pain since I was
developing a Java application at the time. I spent an entire day trying to &ldquo;fix&rdquo;
this before I realised that it was E17 screwing it up and not my code&hellip; :-(</p>
<p>More recently, I thoroughly enjoyed
<a href="http://compiz.org/" title="A Compositing Window Manager">Compiz</a> with the shaky
windows and such like - I just always wished that I could actually throw a
window and watch the momentum carry it that extra distance.</p>
<p>Nevertheless, this bridged the gap enough to E17 to keep me happy for a little
while.</p>
<p>Last week, I dabbled with E17 again to see if the issue with Java was resolved.
To my surprise E17 had changed more or less completely - it was bridging the gap
between a window manager and a full fledged Desktop environment.</p>
<p>However, there was a problem. It looked like I couldn&rsquo;t get it back to its old
glory of absolutely fantastic graphics without some effort in configuration. One
other issue I ran into was that maximising a screen would fill it up across both
my monitors. Another thing I could configure but then, it all seemed like too
much effort.</p>
<p>E17 gives me the feeling that this is where user interfaces will end up - it
automates so many of the things that makes it quicker to do anything. However,
it still lacks some of the &ldquo;basics&rdquo;.</p>
<p>E17 is a very good example of a UI that tries to conform to what I call the
&ldquo;<a href="https://icle.es/2008/12/12/invisible-interface/" title="Invisible Interface">Invisible Interface</a>&rdquo;
which I will be writing about later.</p>
<p>To bring it all back to now, I found it a hassle to go through all the available
themes for WordPress for the Company Blog as well as my own.</p>
<p>I used to take great pleasure in going through dozens or hundreds of themes and
picking ones that I liked but after doing it a few times (for Firefox,
Thunderbird, my phone, GNOME, GDM and my flat), it gets a bit repetitous.</p>
<p>Now, for a wish. A website that pulls in all the different themes for all over
the world for everything. A one-stop-theme shop. Here, I could go through and
pick a general theme that I liked and download it for all the applications, my
phone(s), mp3 players (and of course, taking it to the next level, all the
gadgets at my flat).</p>
<p>That gives my life more uniformity. Perhaps this is something that Designers
could take on&hellip; Say Hugo Boss, and design something that even matches your
clothes, shoes, hair - everything.</p>
<p>That way, you could have your own unique branding&hellip; and while you are at it
link it into Gravatars and you are also instantly recognisable</p>
<p>Now for the issue of privacy - I think I best leave that for another day.</p>
]]></content:encoded></item></channel></rss>