Social Network Architecture

Some more reflections on what I saw at Web 2.0 Expo — I saw a great deal of technology, and there was a good deal of talk about business and marketing strategies. I’m a technologist, so I don’t get into the business and marketing aspects of all of this; but I am reflecting on what an architectural view of all of this means.

The success or failure of any technology venture typically has far less to do with the technology itself and far more to do with other factors. The technology is there to support those other factors; when you focus too much on the technology, you get lost in technical details and fail to see the big picture. Architecture provides perspective. If you understand web architecture, you build better web apps — ones that are more secure and more scalable. If you understand information architecture and business architecture, you provide better solutions for businesses. If you are driven by technology and lack that architectural perspective, your solutions suffer and you are more likely to fail.

Some people recover from this mistake by remaining agile and adapting quickly to circumstance. If they are truly successful in doing this it is because they learn from their mistakes and begin to build or acquire an architectural perspective in an iterative, evolutionary fashion. Sometimes you can’t have the right architectural perspective to start with because you are blazing trails in uncharted territory. It seems to me that much of this Web 2.0 stuff has that character to it, but certainly the more visionary people in the industry are thinking about this.

I’m fairly new to this field, but as I’m thinking about what I saw at the Expo and the technologies I’m delving into, I’m thinking about what this architectural perspective means for social networking on the web. Certainly, there are some lightweight components of an information architecture emerging — such as microformats — as well as more structured information architectures provided by Semantic Web ontologies such as OWL. O’Reilly has published a book on Information Architecture for the World Wide Web — which looks quite interesting, though I haven’t read it yet. Fragments of a technical architecture (layered on web architecture) have emerged with widgets, pinging, and others technical approaches.

In Enterprise Architecture in the business world, though, a key element of the architecture — the “top layer”, one could say — is the business architecture. That is all about understanding the business processes and organization independently of the information structures and systems supporting them. Likewise, the architectural perspective on social networking on the web must include as its top layer an understanding of the patterns of use and the nature of the social networks themselves that emerge. This is heady stuff that has attracted a good deal of scientific interest involving disciplines such as social network analysis and network theory — and I’m certainly out of my depth on those topics. Sometimes, though, this stuff is brought down to earth — such as with Tim O’Reilly’s article on The Architecture of Participation.

I think for those of us building solutions in this space, we need more of the latter — sort of the equivalent of design patterns for social networks. The Wiki Patterns website is a nice example of this approach applied specifically to Wikis. If developers know the best practice patterns for use of Wikis, they build solutions to support those best practices, so they build better solutions. Users benefit, as well, as they have recipes for adoption that enhance their ability to leverage the solutions. So I’m wondering anyone is identifying patterns for social networking applications — the sort of thing that developers can use without needing a PhD in network theory.

Adobe AIR for Data Visualization

I’ve been attending Web 2.0 Expo and a session presenting some Adobe AIR apps got me thinking about the potentials for data visualization using RIA technologies. I may be a bit behind the curve, here. I had always thought of Flex and similar technologies in terms of animated ads or embedded video or music in web pages. I hadn’t thought of the potentials for data visualization and analytics; but now I see a great deal of potential for business analytics, medical and scientific computing — you name it.

The advantage, here, is you push much of the computing to the desktop which can ease scalability issues on the server. You can also, potentially, provide a richer, more interactive experience for the user. The particular app I saw demoed that started me thinking about this was one from NASDAQ that permitted users to download a set of historical market data and do charting and graphing using an AIR app. When the user saw a particular data point of interest, they could zoom in seeing finer and finer-grained charting showing as much detail as they wanted to see — down to fractions of a second of trading activity.

There are apparently a number of other companies building analytical applications with AIR — including a rich client for accessing Google Analytics. These RIA technologies are really blurring the distinction between desktop and server. There are bringing back the sort of rich, highly interactive interfaces of desktop GUI applications while still leveraging a network-centric web infrastructure.

I can think of many applications I’ve worked on in the past that could have benefited from this technology.

Upgrading Wordpress on Ubuntu using Subversion

Although my public blogs are hosted with an ISP, I also have Wordpress installed on my home machine for the sake of hacking and development. I have a full setup on my home machine with Apache web server, PHP, MySQL, and Wordpress. (I also have PostgreSQL and J2EE tools, but that’s another story.)

I had installed all of these smoothly using APT, but I had grown a bit frustrated that the Ubuntu repositories still only had version 2.2 of Wordpress while I was using 2.5 on my public site. Thanks to a tip on the Ubuntu Tutorials blog and info on the WordPress.org site, I decided to switch to using Subversion to manage upgrades rather than waiting for new versions to show up in the Ubuntu repositories.

These are the steps I took:

  1. I saved a copy of my wp-config.php file for safe-keeping.
  2. I uninstalled Wordpress using the Synaptic Package Manager.
  3. I recreated the directory it had been installed in using mkdir, and executed:
  4. sudo svn co http://svn.automattic.com/wordpress/tags/2.5/ . (note the trailing period to install in the current directory).
  5. I edited the wp-config.php file to put the settings from the saved one back in.
  6. I opened http://localhost/<blog-path>/wp-admin/upgrade.php in my browser.

That was it! Worked smoothly. Now I can just use subversion to manage upgrades without waiting for them to show up in the Ubuntu repositories.

Minimalist Manna for Wordpress

I have just switched my Wordpress theme to Milkia, a nice clean simple design based on The Sandbox theme.

I haven’t been happy with the standard themes, and most of the themes I’ve found on the web seem rather heavyweight. They just get too carried away with the graphics. I started thinking that I needed a theme that uses CSS classes intelligently so I can customize the themes layout and appearance with a CSS stylesheet. I also wanted a theme that looks nice, but is clean and simple. Then I found the plaintxt.org blog and the The Sandbox theme. Very nice. The Sandbox is designed just this way — relying heavily on CSS for layout and appearance — and Milkia leverages this to extend The Sandbox.

I plan on delving into the template (or stylesheet) to tweak things the way I want (I’d like to move the sidebar to the right, for instance), but this is a nice change from what I had before — and I like the minimalist design philosophy.

Update: OK, I’ve just noticed an annoying bug with this new Wordpress theme. It seems to be always showing certain widgets in the sidebar even when I customize the sidebar in the widget editor. As a result, I’m currently seeing duplicates of some widgets. This is annoying. I guess fixing this is as good an excuse as any to learn how to write/customize Wordpress themes. In the meantime I’ll remove the duplicates in the widget editor so the sidebar doesn’t look ridiculous.

I also had problems with the sidebar when I tried using the Simpla theme. That’s too bad. It’s a very nice looking theme. I think I’ll investigate and find out the right way to handle sidebars in Wordpress themes and try fixing these myself.

Once a programmer, always a programmer

Blogging is a new experience for me, but I thought I might as well take a stab at it — so here it goes.

I’ve done software development for many years. I started out doing Mac and UNIX programming in C — back in 1990, I believe. I also did Mac programming in 4th Dimension at that time. I eventually learned C++ and OO analysis and design. I was working in the IT department at a major corporation by then. Since I was comfortable in both the Mac and UNIX worlds, I started getting involved in doing Enterprise Application Integration, as well as developing distributed systems using Forté 4GL. The division I was in switched from Macs to Windows PCs, so I started using Windows (though I always had a Sun workstation on my desk, as well). In time, I moved into consulting, and after a short stint doing that, went to work for a product company. I worked principally on integration technologies with a primary focus on developing tools for XML-based messaging — including SOAP support.

Then the dot-com bubble burst and the job market here in the San Francisco bay area tanked. A number of other things happened in my life at the same time, including my father becoming very ill. I took a career break at that time and that led me down an interesting path.

I had been so focused on my career for so many years that I had not even read any books that were not programming references or similar technical materials. When I took a step back, I rediscovered some lost loves — including literature, critical theory and philosophy — and I found myself reflecting quite a bit on my whole life — where I had been and where I was going. I have since become a Zen buddhist and continue to pursue this and other interests. But once a programmer, always a programmer, so I have once again returned to the field of software development.

Returning to work after an absence seemed a bit of a challenge, at first. I decided not to wait for someone to hire me, but to simply dive in and get busy doing development again. So I purchased a new PC with Ubuntu Linux, downloaded a suite of development tools for J2EE and web development and am now actively engaged in pursuing self-education, refreshing my skills and pursuing independent development projects while I try to find permanent employment or contract gigs.

I have decided to write about this experience as I go forward, so that is what this blog is about. I am really enjoying this, so far. I’ve been bitten by the programming bug all over again and have found myself too often still working on my PC late into the night (or early morning). I’ve had to start disciplining myself to remember to quit at a reasonable hour and go to bed. It reminds me of when I first started programming with my Mac.

Now, I’m kicking off this blog and am in the process of setting up a website for myself. I’m learning a new set of skills as I do this. I’ve worked on many web projects in the past, but I always worked on a team where someone else did all of the front-end web work — I always did back-end server programming. I understand markup quite well because of my experience with XML, but learning all of the CSS and JavaScript tricks web designers employ to make web sites look nice is new to me. I’m enjoying it, though, and hopefully I’ll do a good job with this blog and my website. We’ll see.