Tag Archives: linux

Baidu AV software and a new Chinese National Linux Distro

A while ago, I wrote about Baidu’s new smartphone. Baidu is also getting in to the anti-virus business, according to ZDnet. I find this news kind of interesting, since China is one of the top 3 countries of origin for malicious software, according to most folks who work in Information Security (the other two being Russia and Romania).

On a similar note, the Chinese government is also looking to build out a “national OS” based on Ubuntu. I thought that the Chinese tried this a few years ago with Red Flag Linux. I can’t tell from the article if this is a new version of Red Flag, or something different.

Can Capitalism Survive Open Source Abundance?

I read a couple of fascinating opinion pieces by Michel Bauwens on Aljazeera (because I love my country, but I hate its news media) about the emergence of networks as apolitical economic forces.

In part 1, Bauwens talks about Facebook as an example of a growing phenomenon of people working together producing useful things in order to gain the value of their usefulness rather than for a wage. This idea of people producing things without a clear and quantifiable profit is difficult to adjudicate in a capitalist market system:

It is important to understand that this creates a huge problem for a capitalist system, but also for workers as we have traditionally conceived them. Markets are defined as ways to allocate scarce resources, and capitalism is in fact not just a scarcity “allocation” system but also a scarcity engineering system, which can only accumulate capital by constantly reproducing and expanding conditions of scarcity.

As a student of economics, I have found a number of things in our supposedly perfect capitalist market system that I do not agree with, but I have never really thought of capitalism as a system that deliberately creates scarcity where there was none before. As a filthy scumm pirate, to me artificial scarcity is like the Axis of Evil. In the past, I have associated the creation of artificial scarcity with ignorance or malice on the part of entrenched industry players. Blue Gold: World Water Wars is a good example of the practice of creating scarcity where it didn’t once exist, at the expense of other people, for no other reason than to generate profits for large multinational corporations. I had not previously considered the idea that this is not simply the work of bad players, or a bug in the system, but instead it is a feature of the capitalist platform. This new idea, that capitalism is a platform for the perpetuation of scarcity rather than a mechanism for efficient allocation to offset scarcity, to me at least, is an original thought.

Part 1 then goes on to talk about open source and open design as a means for creating commons-based economic models, where new ideas are poured into a shared pool of assets:

We have to link this emerging social economy, based on sharing creative expression, with the more authentic field of commons-oriented peer production, as expressed in the open-source and “fair use” open-content economy, which one estimate said made up one-sixth of US GDP.

When I think about open source vs. proprietary software, I often default to the ages-old comparison of Linux and Microsoft Windows. Doing this paints a picture that Linux, as a movement, targeted Microsoft and has failed to impact the market for Windows desktops in a meaningful way. This conveniently [for Microsoft and anyone else in the business of selling shrink-wrapped software] ignores the commercial Unix market that was all but destroyed by Linux. The Internet facilitated the creation of software that has value represented by usefulness and saleability. While you can make money from selling Linux, Linux actually displaces monetary value by providing significantly more usefulness than revenue. The value of Linux is the money that it frees up, not in the money that it generates. The commercial Unix market shrank dramatically once Linux came on the scene because companies spent less on their infrastructure. This reduction in costs is largely what drove ISP’s and web hosts to build and grow businesses in while facing intense competition in the field.

Disruptive Innovations happen all the time, and most of the Big Biz vs. Teh Internetz drama (Net Neutrality, SOPA et. al.) stems from industries trying to convince the world they are no longer obsolete (see: landline phones, newspapers, music, etc.) What I hadn’t considered before is that the “network effect” of connecting people via the Internet could create new patterns of consumption where people work together to make better use of products and services:

What will happen with capitalism given social media-based exchanges, commons-based production of software and hardware, and collaborative consumption, on an increasingly massive scale? …This is not just a problem for the increasingly precarious working class, but also for capitalism itself, which is seeing its opportunities for accumulation and expansion dry up.

Accumulation and expansion is an essential piece of capitalism. It’s the manifest destiny of “growth at all costs” that fuels these boom->bust cycles:


I feel that a critical flaw in using money as the only way to value things is that when the only tool that you have is a dollar, everything looks like a commodity. Likewise, when you measure the value of a nation only by its Gross Domestic Product, your valuation method is set up to ignore the things that capitalism isn’t good at delivering, like meaning and happiness. To me this is a major failing of our modern interpretation of capitalist system, since we invest so much in terms of time, money, and politics, in the idea that working hard and buying things will make us happy when it actually doesn’t.

Part 1 then wraps up by calling this rise of networks a crisis for capitalist societies:

Not only is the world faced with a global resource crisis, it is also facing a crisis of intensive development, because value creators are increasingly income-less. The knowledge economy turns out to be a pipe dream, because what is abundant cannot sustain market dynamics.

That snippet stopped me cold. For a couple of years now, I have been trying hard to get my head around this very large idea that the life my father lived, of getting a good university education that leads directly to a good upper-middle-class job (and the gooey suburban predicament that comes with it) is gone and might never have existed in the first place. It’s the idea that “Designed by Apple in California” is a non-starter because the Information Economy isn’t about movies, music and microcode, it’s always been [and always will be] about Real Actual Work(tm).

Real Actual Work(tm) is a term I made up to describe making things and helping people. Real Actual Work(tm) is a category of activities that yields a useful or enjoyable asset, or a service which provides a direct, measurable and quantifiable benefit to a person or a group of people. I think this distinction is important because I believe that too much emphasis is placed on the profits generated by corporate middlemen, lawyers and petty bureaucrats. Monopoly rents, regardless of their form or profitability are not nearly as important as making things or helping people.

In part 2 the author talks about the “Open Software Economy” and how people go about doing the Real Actual Work(tm) that goes into making things like Linux:

In commons-oriented peer production… core value creation occurs through contributors to a shared innovation pool, a commons of knowledge, software or design. The contributors may be volunteers or paid employees. Importantly, even paid contributors add to the common pool. Why? Because shared innovation makes an enormous difference in costs (give a brick, get a house), and it is also hyper-competitive…it doesn’t matter whether you are a “commonist” free software developer, or a capitalist shareholder of IBM. Both sides benefit and they outcompete or “outcooperate” traditional proprietary competitors.


The environment for this abundance of cooperative+competitive “commons-oriented peer production” is basically the opposite of capitalist-centric economics which is dominated by supply and demand. Supply and demand are how you allocate scarce resources. Once a resource becomes abundant, like digital media in a massively connected Internet age, supply and demand go out the window.

It is at this intersection between the traditional capitalist-centric view of economics, and the commonist-centric view of peer production, where we see the problem with Facebook. In the open source community, the community (network) comes together around problem solving (the product). In social networking, the network (community) IS the product (problem solving). We are trading out time and attention to Facebook in exchange for the infrastructure that helps us effortlessly maintain our weak personal connections to each other. The Facebook business model is based on selling access to the infrastructure AS a commodity, rather than providing the infrastructure as a means of enabling the production of a commodity. Facebook is a remarkable force for social change, but it’s commercial DNA often makes it the wrong tool for the job:

To improve the situation in social media, we need peer-producing communities to create their own social media infrastructure – as Occupy is now undertaking with its ambitious Global Square project, whose aim is to ultimately replace Facebook with a civic network.

Not only does the author recommend replacing Facebook with purpose-built “civic networks”, he recommends replacing for-profits and non-profits with a new breed of “civic enterprise”:

But in peer production, we need a further hack as well. Instead of associating with shareholding companies, why not create our own entities: ethical company structures, in which the commons values are embedded within its legal structure, and do not have to be imposed from the outside? In other words, where the “invisible hand” needs not be theorised as an outside force, but is a clearly active “visible hand” that drives each individual, but commons-oriented, enterprise

This, to me, is another original thought. It’s the idea that the advent of open source as a business and civic-enterprise model could require a new form of organization that is different from both the traditional capitalist for-profit, and the quasi-socialist non-profit. Both for-profits and non-profits seem to fall short of enabling the kind of large cooperation that makes open source work:

Today, we assume that value is created by for-profit companies and conceive of civil society as a “remainder” category: it’s what we do when we come home, exhausted after our paid work. This is reflected in the language we use to describe civil society, when we call them non-profits or non-governmental.

Civic enterprise seems to be different than the non-profit social enterprise. In my studies into public administration I have learned that non-profit organization, as a discipline, seems to focus on fixing the failures of business and government, rather than doing innovative things. When you look at large non-profits, especially those focused on medical research, they often look and act like the companies and agencies that they are cleaning up after. Neither government nor business seems to be able to find a cure for breast cancer, and so social enterprises have stepped in, which is good, but in doing so, they seem to have adopted the same money driven, top-down, central planning approach as their government and business predecessors, rather than adopting new approaches that do more with less. It seems that either by coincidence or causation, government and business use similar approaches (centralized management) and have sort of dissolved and congealed into this weird symbiosis:

…the social democratic welfare state has increasingly become a corporate-welfare state, in which the gains are privatised and the losses socialised. In other words, the state has become an extension of the corporation and is less and less a servant of the citizenry.

In theory, the non-profit is the citizenry’s first line of defense. Non-profits rely on neither business, nor government to keep running so there should be at least some measure of protection against the gravitational pull of government/corporate corruption. I for one, am not convinced, because of the non-profit’s use of the same leadership and management techniques that led government and business into co-dependence.

I am intrigued by Bauwen’s idea of the civic enterprise. I am intrigued by the idea of using networks of citizens to cooperate their way through problems, and having those networks serve as a check and balance against abuses of and by the corporate welfare state:

Occupy and open-source models illuminate a new possible reality, in which the democratic civic sphere, productive commons and a vibrant market can co-exist for mutual benefit:

* At the core of value creation are various commons, where innovations are open for all to share and to build upon;
* These commons are protected through non-profit civic associations, which empower that social production;
* Around the commons emerges a vibrant commons-oriented economy comprised of ethical companies, whose legal structures tie them to the values and goals of the commons communities, not to creating private profit.

Where these three circles intersect, citizens decide on the optimal shape of their provisioning systems.

my .screenrc

for firsttohit who was interested:

# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev
bindkey -k F2 next
bindkey -k k; screen
bindkey -k k9 detach
#remove hit spacebar to continue
startup_message off
# Window list at the bottom.
hardstatus alwayslastline
hardstatus string "%-w%{= BW}%50>%n %t%{-}%+w%<"

i should note that i use putty on windows primarily. in gnome the F11 maximizes the terminal window. not a big deal, since F12 still works.

EDIT 11/4/2012: should you find screen behaving weirdly for you, you can reset your session with ctrl+a and then shift+z. you can then completely destroy your session (it's the only way to be sure) with ctrl+a and shift+k. Screen should ask you if you are sure you want to kill the session. Obviously you should save anything you have open before resetting and killing sessions.

router drama

i am moving to a new house and i am getting DSL set up today. i have a pretty complicated home network (multiple segments, internet facing servers, etc.) and i wanted to use something simple to sort of bootstrap the network until i can get my wired network cabled and my switches installed and configured.

i have a linksys router that i flashed with openWRT that is serving mostly as a wireless access point. it was my only router for like 3 years, but i replaced it with an old PC running smoothwall linux and used the openWRT as a wireless access point. i figured i could re-config it as the main router temporarily.

the linksys factory firmware isn’t that great and really only works if you only need access to the internet and don’t mind resetting the box every few days. if you want to run servers from your house, being able to forward only 10 ranges of ports and having an unreliable connection are major hindrances.

openWRT is a good alternative. it’s fairly stable (compared to factory firmware; it’s not as stable as smoothwall) and it has a bunch of nifty features, and uses your same linksys hardware.

configuring openWRT is pretty router guy-ish and involves commits to nvram and the like. it also can be a pretty embbeded systems-ish with talk about solder points and jtags. the only person i have ever heard talking about jtags is travis goodspeed who is an embedded systems monster. so it’s free, open source, multi-platform (i think it runs on PCs even, tho that may just be a development thing) and it’s full of nifty network features like QOS and VLAN tagging.

honestly, openWRT is more robust than smoothwall, but the linksys hardware just isn’t that stable. even with openWRT, it would occasionally (like every few months) stop handing out IP addresses, and my ISP, insight broadband, would randomly decide it wasn’t going to give the openWRT an IP address, even though it would hand out IP’s to laptops and older linksys routers.

anyway, since i am not a micro controller monster, and my router kung fu is still pretty weak, i decided to use x-wrt to handle the configging of the router so i can see what i am doing before it gets committed to nvram. i know that makes you cisco guys cringe :-)

installing x-wrt on top of openWRT makes things a lot easier. x-wrt is a web ui for openWRT. IF linksys firmware is analogous to having xp home on a PC, AND installing openWRT is analogous to installing debian or openBSD on that windows machine, then x-wrt would be analogous to installing webmin on the new linux install.

i still use the openWRT box (it has to be like 5 years old by now) as my WAP, it’s plugged into a third NIC on the smoothwall box.

for some silly reason, on the openWRT i messed with the vlan setup and changed the WAN interface into a regular switch port. i guess i was worried about not having enough wired ports on that network segment or something. this was fine when using the box as an overly complicated WAP, but putting it back in service as a full fledged router was apparently beyond my skill to heal. i spent a couple of hours deleting and recreating networks and vlans to no avail. i just couldn’t get the linksys to pull a DHCP address from the smoothwall and allow a client connected to the switch to connect to the internet.

so i figured i would reset it to the default config, and start fresh. keep in mind that i installed openWRT like 4 years ago. a lot has changed since then.

so now the drama. 4 years ago, the openWRT website was fairly straight forward, and x-wrt was largely experimental, so most of the useful info came from the openWRT wiki. at some point, the openWRT folks decided to redo their docs, and so a lot of info has been lost or is becoming obsolete in a read only copy of the older wiki. simple stuff like “what version of openWRT do i put on my model of router” can be a real challenge to find.

BTW if you have a linksys wrt54gl v1.1 like me, the answer is here.

also, the FAQ’s in the forums (under common mistakes) are a little juvenile in their tone, so i am reluctant to post uninteresting questions like “how do i reset my router to the initial setup?”. the answer is buried on this page.

here’s what you do:
step 1: set up a PC with a static IP of 192.168.1.10
step 2: disconnect everything from the linksys box except for your PC with the static IP, which should be connected to one of the switch ports.
step 3: power cycle the linksys box (unplug the AC, wait a few seconds, plug it back in)
step 4: wait for the DMZ light to come on, at this point the box has booted up
step 5: immediately press and hold reset for a couple of seconds. once the dmz light blinks steadily. the router is now in failsafe mode
step 6: telnet to 192.168.1.1, there should be no login or anything, just the openWRT login splash.
step 7: type firstboot at the prompt and everything should reset.

so i did this and got a working box with the default config. unfortunately, this wiped out x-wrt :sadface:

this left me in the rather unique position of having a working vanilla openWRT install and needing to install x-wrt. this used to be how x-wrt is installed, you go openWRT going, then you did some package installs to download and install x-wrt. nowadays, the preferred method of install is to just flash with a firmware image that already has x-wrt installed. my install is out of date, so it’s time to upgrade.

the x-wrt website offered some info on which firmware image to use, and how to use the linksys firmware update to flash it on, which is how i got openWRT on the box 5 years ago. but not a lot of info on how to get x-wrt on when you already have an outdated version of openWRT.

after more digging this is what i did:
the wrt54gl uses a broadcom board, according to this page

x-wrt suggested the openwrt-brcm-2.4-squashfs.trx image for most broadcom boards, per this page

the wrt54gl page also had this little tidbit in it:

Using the mtd command line tool

If you have already installed OpenWrt and like to reflash for e.g. upgrading to a new OpenWrt version. It is important that you put the firmware image into the ramdisk (/tmp) before you start flashing.

cd /tmp/
wget http://downloads.openwrt.org/kamikaze/8.09/brcm-2.4/openwrt-brcm-2.4-squashfs.trx
mtd write /tmp/openwrt-brcm-2.4-squashfs.trx linux && reboot

now we are getting somewhere!

so taking what i knew about the image to install from x-wrt, and this handy little tip, we can grab a new version of openWRT AND install x-wrt in one go:

telnet into your recently reset openWRT box and execute the following:
cd /tmp
wget http://downloads.x-wrt.org/xwrt/kamikaze/8.09/brcm-2.4/default/openwrt-brcm-2.4-squashfs.trx
mtd write /tmp/openwrt-brcm-2.4-squashfs.trx linux && reboot

so once the .trx comes down, you use mdt to flash it and when it reboots you should have a working vanilla openWRT + x-wrt.

in the future, i want to mess with the vlans again so there are two internal networks, and also add an additional virtual WLAN interface so i can run two wifi networks, one wpa2+radius for my internal network, and one unsecured one on a locked down segment of the network. this way friends or whomever can just hop on the internet when they come over, and my internal network is safe from potential harm.

i have a new box with 5 nics in it that will be my new router, so i can add a second uplink and a DMZ. i am not sure if i will keep smoothwall, or go with something else, like openBSD.

one interesting thing i discovered: while troubleshooting the problems that led me to flash/update, i was plugging the wan port of the linksys box into a nic on my smoothwall. i was testing with a laptop using a crossover cable connected to the smoothwall and switching to a patch cable when i plugged in the linksys like so:
laptop x=crossover=x smoothwall
laptop ==patch== linksys ==patch== smoothwall

a couple of times, i would forget to swap the crossover out and just plugged it in to the WAN port on the linksys like so:
laptop ==patch== linksys x=crossover=x smoothwall

when i did this, the laptop pulled a DHCP address from smoothwall and not from the linksys, and was able to connect to the internet when the linksys was not, despite being plugged into the linksys. it took me a couple of minutes to figure out what was wrong.