Tuesday, May 31, 2011

Operating Systems Utopia: Alternative, Academic Systems and the System of the Future

My background with and enthusiasm for free and open source operating systems started when, back in college here and then here, I needed to use a computer and there's only MS-DOS (and its GUI for your personal confuser, Windows) together with its quirks and virus bandwagon, not to mention the agony of inconvenience they bring. As I mentioned in my previous article, I learned to program computer viruses and realized there's no creative, social or educational benefit from it. Frustrated, I pined for the day I can have an operating environment that's impervious to computer viruses, can run multiple applications, is free (haven't yet imagined it's source code is also accessible) and most importantly, shouldn't crash (at least compared to DOS and Windows that pulls this stunt on a regular basis).

Tuesday, May 24, 2011

Compromised Server Security Measures

Recently, my employer's web server hosted on Rackspace Cloud was compromised (yes I still have a day job), and I helped resolve the issue, consequently formulating some security measures which I hope to impart today wishing you won't have to go through the upheavels we had. You may also learn more on this from Linux Server Security and Secure Architectures with OpenBSD.

From the experience we had at work, here are some of the measures I would advocate (some advise you may have encountered somewhere else):
  • Isolate access to the compromised server
  • Secure the workstation that solely accesses the server
  • For web application scripts, have trusted copy in version control systems
  • Your .htaccess may be the culprit
  • Setup routine file change monitor
As our modus operandi goes, below are the rationale and discussion of the measures above.

Tuesday, May 17, 2011

What a Tablet Computer Could and Should Be

With all the hype over Apple's iPad and the feasibility of having your own custom-made touchscreen tablet computer, I think we deserve a better user experience of how we can acquire and interact with a touchscreen tablet computer (which from here onwards we will refer to as tablet computers to save on tongue twisting effort). We will not discuss the usual desirables, like durable and eco-friendly parts and components, fast responding user interface, smooth graphics, and high fidelity (that's oldspeak for hi-fi) sound, they should be standard features.

Below is a list of proposed improvements every tablet computer could and should have:
  • Have Dvorak keyboard layout as option
  • Make Internet access via Wi-fi AND Bluetooth easy
  • Fast, compact, standard compliant web browser
  • Open standard video and audio support
  • Text-to-speech book and news reader built-in
  • Must be social network agnostic
  • Interface port
  • No cellular phone capability
  • Use BSD operating system instead
Below are the rationale for the proposals we have above.

Monday, May 16, 2011

The Computer Renaissance: Return of the Homebrew Computer

I can't recall when and where I read it particularly, but the saying I think still rings true and goes:

If you love software, you have to make your own hardware

One of the reasons I cherish my college alma mater is that I found in their library the book Build Your Own Z80 Computer, that fortunately is now available in free to download PDF here, which served as my guide on homebrew computer design, gave me a peek into how the likes of Apple's legendary Steve Wozniak think and compelled me to have more respect and take a second look at (digital) electronics.

During my college days (yes the 90s), I made a bet that software is where the money is, and thankfully, that bet paid off by having a software development career that pay the bills and serve food on the table. But recently, I have observed that the hardware and software we use in the workplace is not fit for educational purposes. The hardware and software platform we have is so advanced that it's technically the new main frame machines that was so valuable to the corporate world, but offers very little or no educational benefit.

Tuesday, May 10, 2011

Bandwidth Cap: Twilight of the Internet Access Middleman

In early 2000, the historic Water Wars of Cochabamba happened in Bolivia, because a water concession corporation sanctioned water rates that are too high for many to afford and avail of decent supply of water, while forbidding people to collect rainwater, you can read about it on Water Wars: Privatization, Pollution, and Profit. In the documentary The Corporation showing footage of what happened in that part of Bolivia, people were so outraged, this is their battlecry: "It's our water, damn it!"
Proponents of bandwidth or bit cap cite justifications, such as this article discusses. They want to convince broadband consumers that internet bandwidth is a finite, limited resource like water, thus rationed . Unlike water, bandwidth is only artificially regulated and limited,  but like water, can be projected to be so for profits.

What is there to regulate when what the people contributed is what makes the internet valuable? The blogs and articles online? It's our content! The videos? It's our content! The pictures? It's our content! The social networks and forums? It's our content! The online game experience and scoreboard? It's our content! Internet is first and foremost an information highway, and with our right to know, we have right to have access to information, moreover, we have the right to access information we created and/or care about.

Thursday, May 5, 2011

OpenBSD and GNUstep: Falling in Love with OpenStep All Over Again

Apple's MacOS X has head and shoulder advantage over the competiton for user experience and rapid application development thanks to Cocoa, based on NeXT's OpenStep, the pioneer in cross platform rapid application development with Interface Builder and Project Builder a.k.a. Xcode (Microsoft's Visual Basic still pales in comparison).

GNUstep is a free and open source implementation of the OpenStep standard, and ironically, I first read about it from Microsoft Bookshelf Internet Directory(pointing to a project mirror in Europe with URL that can be challenging to type to hideaway the project perhaps?) back when I was in the province. What piqued my curiosity about OpenStep in general and GNUstep in particular is that, once you've overcome the learning curve of Objective-C, it enables a developer to create distributed systems, fast software prototyping, cross-platform development, and can be used with Java and Ruby, all for free.

My favorite free and open source operating system is OpenBSD, with the release of version 4.9 having ready to install GNUstep packages, we have an opportunity to see how OpenBSD and GNUstep fits together to create a free and open source OpenStep environment.

Wednesday, May 4, 2011

Node.js and NPM: Key to Dynamic Web Applications Beyond AMP

I keep reading mention of blog articles on Node.js, Node.js Package Manager (NPM), Socket.io and web socket programming like this on Twitter and given that I had time to check it out, researched and updated myself on what the rave is all about.

The Node.js website (<rant>) isn't very helpful how to install this supposed to be Javascript file, given that the example invokes the script in a different manner, and you'll even be more confused if we add NPM to the mix. Another disappointment I have against Node.js is that it didn't build on OpenBSD 4.9(</rant>). What I have below is how I was able to set this up on my two Ubuntu 10.04LTS boxes, one with SSL and the other without.

Sunday, May 1, 2011

Systems Every (Starting) Developer or Software House Should Know and Have

Regardless of programming language of choice you work or specialize in, there are processes or systems developers and software development shops must make sure are in place and know how to use to help develop robust, reliable and good reputation-building application with little fuss.

What are these processes that every developer and software house should have? They are:
  • Coding standard
  • Source code documentation
  • Software application testing system
  • Bug tracker system
  • Version control system
  • And hopefully, continuous integration system
In this article we discuss them, their rationale and examples to help you find some to try for fit in your software development workflow.