Apr 4 2012

How to Install your WordPress Blog on your Joyent SmartMachine ( SmartOS )

If you are going to install a blog such as WordPress in a bare Joyent SmartMachine, some preparation must be done because it is a bare SmartOS. Nothing extra is installed on it, so you would have to prepare your mysql, apache and configure them. The following unofficial procedure outlines such an installation.

Environment

[root@deniz-joy1 ~]# uname -a
SunOS deniz-joy1.joyent.us.local 5.11 joyent_20120126T071347Z i86pc i386 i86pc Solaris

Prerequisites

You will need to install some software before diving into WordPress installation. The following sofwtare will be installed and used:

1) WordPress Source

2) MySql Client & Server

3) Apache2

4) Unzip (Optional )

Preparation

1 – Create a Directory called Downloads and download WordPress in there

[root@deniz-joy1 ~]# mkdir Downloads

[root@deniz-joy1 ~]# cd Downloads

[root@deniz-joy1 ~/Downloads]# wget http://wordpress.org/latest.zip

2 – Start installing some Software

Unzip package

[root@deniz-joy1 ~/Downloads]# pkgin in unzip-6.0
calculating dependencies… – calculating dependencies… done.

nothing to upgrade.
1 packages to be installed: unzip-6.0 (160K to download, 377K to install)

proceed ? [y/N] y

….

Mysql Packages

[root@deniz-joy1 ~/Downloads]# pkgin in mysql-client-5.5.16

….

[root@deniz-joy1 ~/Downloads]#  pkgin in mysql-server-5.5.16nb1

….

3 – Configure the Database

[root@deniz-joy1 ~/Downloads]# mysql_install_db –user=mysql –skip-name-resolve –force

Installing MySQL system tables…
OK
Filling help tables…
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

…..

4 – Enable the Database and Continue configuring

oot@deniz-joy1 ~/Downloads]# svcadm enable mysql
[root@deniz-joy1 ~/Downloads]# svcs -a | grep mysql
online 3:57:08 svc:/network/mysql:default

Setup Passwords

[root@deniz-joy1 ~/Downloads]# /opt/local/bin/mysqladmin -u root password ‘xxx”

[root@deniz-joy1 ~/Downloads]# mysqladmin -u root -h deniz-joy1.joyent.us.local password ‘xxx’

Restart MySql

[root@deniz-joy1 ~/Downloads]# svcadm restart mysql
[root@deniz-joy1 ~/Downloads]# svcs -a | grep mysql
online 3:58:33 svc:/network/mysql:default

5 – Test Your Connection and Create a DB user

[root@deniz-joy1 ~/Downloads]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.16 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

mysql> CREATE USER ‘deniz’@'localhost’ IDENTIFIED BY ‘xxx’;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘deniz’@'localhost’ WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

6 – Connect with this new User and Create your WordPress Database

[root@deniz-joy1 ~/Downloads]# mysql -u deniz -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.16 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO “deniz”@”deniz-joy1.joyent.us.local” IDENTIFIED BY “xxx”;

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> EXIT
Bye

7 – Install Apache and friends:

[root@deniz-joy1 ~/Downloads]# pkgin in apache-2.2.21nb2
calculating dependencies… – calculating dependencies… done.

nothing to upgrade.
5 packages to be installed: openldap-client-2.4.24 expat-2.0.1nb2 apr-1.4.5 apr-util-1.3.12nb1 apache-2.2.21nb2 (5832K to download, 22M to install)

proceed ? [y/N] y

….

Install Apache (apache22) module for PHP5.3

[root@deniz-joy1 ~/Downloads]# pkgin in ap22-php53-5.3.8nb1
calculating dependencies… – calculating dependencies… done.

nothing to upgrade.
4 packages to be installed: xmlcatmgr-2.2nb1 php-5.3.8nb1 libxml2-2.7.8nb4 ap22-php53-5.3.8nb1 (9065K to download, 33M to install)

proceed ? [y/N] y
downloading packages…

….

Install mysql php extensions

[root@deniz-joy1 ~/Downloads]# pkgin in php53-mysql-5.3.8
calculating dependencies… – calculating dependencies… done.

nothing to upgrade.
1 packages to be installed: php53-mysql-5.3.8 (26K to download, 70K to install)

proceed ? [y/N] y

….

8 – WordPress Configuration

Copy latest.zip into /opt/local/share/httpd/htdocs/ directory and unzip

[root@deniz-joy1 ~/Downloads]# cp latest.zip /opt/local/share/httpd/htdocs/.

[root@deniz-joy1 /opt/local/share/httpd/htdocs]# unzip -q latest.zip

[root@deniz-joy1 /opt/local/share/httpd/htdocs]# ls
index.html latest.zip wordpress

Change permissions of wordpress directory to www

root@deniz-joy1 /opt/local/share/httpd/htdocs]# chown -R www:www wordpress/

Need to include mod_php5.so to httpd.conf 

httpd.conf is in /opt/local/etc/httpd/httpd.conf, add the line in there

The line is this:

LoadModule php5_module lib/httpd/mod_php5.so

Inside <IfModule mime_module> line you need the add the following line:

AddHandler application/x-httpd-php .php

index.php line in httpd.conf file inside <IfModule dir_module> must also be added:

DirectoryIndex index.html index.php

Add extension=mysql.so in /opt/local/etc/php.ini

extension=mysql.so

Now Edit Your wp-config File

[root@deniz-joy1 /opt/local/share/httpd/htdocs/wordpress]# cp wp-config-sample.php wp-config.php
[root@deniz-joy1 /opt/local/share/httpd/htdocs/wordpress]# vi wp-config.php

….

// ** MySQL settings – You can get this info from your web host ** //
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wordpress’);

/** MySQL database username */
define(‘DB_USER’, ‘deniz’);

/** MySQL database password */
define(‘DB_PASSWORD’, ‘xxx’);

/** MySQL hostname */
define(‘DB_HOST’, ‘localhost’);

…..

9 – Restart Apache and Mysql

[root@deniz-joy1]# svcadm restart apache
[root@deniz-joy1]# svcadm restart mysql

[root@deniz-joy1 ~]# svcs -a | grep apache
online 4:35:55 svc:/network/apache:default
[root@deniz-joy1 ~]# svcs -a | grep mysql
online 4:36:12 svc:/network/mysql:default

10 – Start Browser Based Installation

Go to http://hostname/wordpress/wp-admin/install.php and follow the screenshots. It should look like below:

That should be it.

I installed this in smartos64-1.5.4 SM, which is a bare one. If you have one of those plus machines then many of the above configurations are already there.

Cheers!

 

 


Mar 7 2012

How to Use Alfred App to Scp Files to Your Joyent SmartMachine

My own blog runs on a Joyent SmartMachine, and I generally find myself uploading bunch of files to my SM. Sure you can use bunch of clients like Cyberduck, Transmit, etc. I’d like to just use plain old scp command on the terminal.

I recently had an idea that since I use and love Alfred app a lot, why not just create an extension for it. The extension actually applies all kinds of servers but you will need to get around supplying password in the shell script. Well, I don’t like that!. By using private/public ssh key mechanism, you can just access your machine. If you are not familiar with the terms, you can look here for Joyent related info, and here to create your own public/private keys.

If you are using Joyent Smartmachine, you are in luck with this extension, all you need to do is to replace your server name, etc and you should be good to go. I should also mention that the script is really basic and it is written in bash.

So there are couple of assumptions being made in the script which I also commented in the file. For example, your default local location for your files is your desktop and the script assumes that you created a remote folder in the server to save your files.

You will see “sc” as your tag for the Alfred app and all you need to do is to provide the name of the file or the folder you want to upload next to it.

Growl notifies you when the scp job is finished or it informs you if the file or the folder does not exist.

You are welcome to improve this extension and let me know what you come up with. I am interested to see what people can share.

Following are the screenshots when you want to upload your files using scp through Alfred.

The growl notification can be seen as follows:

From the remote server, I can see the following now:

[jill@machine-unix ~/Dropzone]$ ls -l
total 2
-rw-r–r– 1 jill jill 142 Mar 7 04:41 mypics.zip

You can download the file here.

The icon used for this extension is downloaded from another website I really like. Check out deviantART site, and the icon set link.


Feb 7 2012

Solaris ck* Tools

There are bunch of tools under Solaris systems that make your coding life easier, if you find yourself keep writing the same code over and over again in your scripst you might want to look at these tools. In my Openindiana 151a System, I have the following

root@oi151a:~/Proj# ck
ckdate ckint ckkeywd ckrange cksum ckuid
ckgid ckitem ckpath ckstr cktime ckyorn

So let’s take ckyorn for example. It let’s you answer a question with yes or no, it looks like following if you just execute it:

root@oi151a:~/Proj# ckyorn

Yes or No [y,n,?,q] a
ERROR: Please enter yes or no.

Yes or No [y,n,?,q] n
n
root@oi151a:~/Proj#

You can utilize this maybe under bash something like this:

#!/usr/bin/bash

myanswer=`ckyorn -p “Are you 21 or older?”`

if [ $myanswer == "n" ]
then echo “you can’t buy alcohol!”
else
echo “…..”
fi

Which when executed:

root@oi151a:~/Proj# ./myscript

Are you 21 or older? [y,n,?,q] n
you can’t buy alcohol

These are very useful tools and you can find more information in the man pages.


Dec 8 2011

mDNS on OpenIndiana 151a

I stumbled upon the term at work. I knew nothing about it. I got really curious, because I’ve seen it in various places, could not resist and asked around and learned a bit about it.

mDNS, aka multicast DNS is a protocol where you can use DNS related operations when there is no available centralized DNS service. In other words, it lets hosts to see each other or rather determine the IP addresses without needing a dns server installed.  Wikipedia also refers that Apple’s Bonjour service ( more on this later ) and  Linux Avahi service utilizes this protocol.

If you have a small network, or home network you can utilize mDNS very quickly, and since mdns uses .local namespace using it becomes a breeze. So how ?

OpenIndiana ( and possibly Solaris 11 ) comes preinstalled with the service. You need to do only two things to start using

1) Edit /etc/nsswicth.conf by adding mds in relevant fields

2) Enable the relevant SMF Service.

Edit /etc/nsswitch.conf

I already had two zones in my OpenIndiana 151a called “zdev” and “zdev2″. So in each zone I edited nsswitch.conf:

root@zdev2:~# cat /etc/nsswitch.conf | grep mdns
# server lookup.  See resolv.conf(4). For lookup via mdns
# svc:/network/dns/multicast:default must also be enabled. See mdnsd(1M)
hosts:      files dns mdns
ipnodes:   files dns mdns

Enable SMF

Enabled the service in each zone:

root@zde2v:~# svcs -a | grep multicast
online         21:10:40 svc:/network/dns/multicast:default

So, ok files are edited, services are enabled. Then what? Enter .local namespace. From my local Mac Terminal:

Juan K:~ drende$ ssh root@zdev2.local
Password:
Last login: Wed Dec  7 21:54:59 2011 from joyent
OpenIndiana (powered by illumos)    SunOS 5.11    oi_151a    September 2011
root@zdev2:~# exit

There is nothing indicating the existence of either zdev or zdev2 in my local /etc/hosts. I just used the name space and voila. So how does it really work?

We know that by now from our reading different sources in the packet structure the IPv4 address is 224.0.0.251 and it runs on UDP port 5353 by default.

There is an awesome utility called snoop on Solaris systems, lets pick up the multicast traffic:

I have two terminals open one is used for generating some simple traffic to the zones, and the other is logged in to the GZ OpenIndiana snooping the traffic:

TERMINAL 1

Juan K:~ drende$ ping zdev.local
PING zdev.local (192.168.1.202): 56 data bytes
64 bytes from 192.168.1.202: icmp_seq=0 ttl=255 time=0.521 ms
64 bytes from 192.168.1.202: icmp_seq=1 ttl=255 time=0.576 ms
64 bytes from 192.168.1.202: icmp_seq=2 ttl=255 time=0.540 ms
64 bytes from 192.168.1.202: icmp_seq=3 ttl=255 time=0.563 ms
^C
--- zdev.local ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.521/0.550/0.576/0.021 ms
Juan K:~ drende$ ping zdev2.local
PING zdev2.local (192.168.1.203): 56 data bytes
64 bytes from 192.168.1.203: icmp_seq=0 ttl=255 time=0.169 ms
64 bytes from 192.168.1.203: icmp_seq=1 ttl=255 time=0.549 ms
64 bytes from 192.168.1.203: icmp_seq=2 ttl=255 time=0.443 ms
64 bytes from 192.168.1.203: icmp_seq=3 ttl=255 time=0.540 ms
^C
--- zdev2.local ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.169/0.425/0.549/0.154 ms

TERMINAL 2

root@oi151a:~# snoop -d e1000g0 udp port 5353
Using device e1000g0 (promiscuous mode)
Juan K -> 224.0.0.251  MDNS C zdev.local. Internet Addr ?
fe80::6233:4bff:fe04:7ffb -> ff02::fb     MDNS C zdev2.local. Internet Addr ?
192.168.1.202 -> 224.0.0.251  MDNS R zdev.local. Internet Addr 192.168.1.202
Juan K -> 224.0.0.251  MDNS C zdev2.local. Internet Addr ?
fe80::6233:4bff:fe04:7ffb -> ff02::fb     MDNS C zdev.local. Internet Addr ?
192.168.1.203 -> 224.0.0.251  MDNS R zdev.local. Internet Addr 192.168.1.203

Ok so now we know how the multicast traffic looks like and how the hosts communicate with each other without needing a centralized dns server, what else can we do with this?

It turns out very plenty. There is a short little documentation about mDNS on Oracle Solaris website. There the documentation talks about how to advertise the resources for DNS. We are going to take a look at the last example, how to advertise a web page so that when you register your page, it will be available on the Bonjour list in Safari and other DNS-SD compatible web clients.

In other words, when you advertise the page every DNS-SD compatible web client will see what is in there. So to see what this meant, I went ahead and installed apache22 on zdev2 to serve a single “It works” page.

root@zdev2:~# pkg install apache
               Packages to install:    20
           Create boot environment:    No
               Services to restart:     3
DOWNLOAD                                  PKGS       FILES    XFER (MB)
Completed                                20/20   2053/2053    28.0/28.0

PHASE                                        ACTIONS
Install Phase                              2933/2933 

PHASE                                          ITEMS
Package State Update Phase                     20/20
Image State Update Phase                         2/2

When you hit the IP of the zone, as expected I am getting “It works” page. You can see this in the following Firefox Browser:

 

 

The following is the Safari Browser initial Bonjour List:

So let’s register our web page with dns-sd command:

root@zdev2:~# dns-sd -R "zdev2" _http._tcp . 80 path=/
Registering Service zdev2._http._tcp port 80
 path=/
Got a reply for zdev2._http._tcp.local.: Name now registered and active

Now let’s go back to our Safari Bonjour List and see the registration:

 

 

If you were to click “zdev2″ on the browser, the following would be the result:

 

This is amazingly cool. I could think of many uses of this. You can probably create a whole website in your intranet and just serve it out of a Illumos powered OpenIndiana zone and do bunch of other things with it. The security of using such a protocol in a decentralized dns environment is left as an exercise to the reader!

 

 


Dec 7 2011

Mac OSX Alfred Extension

One of the apps that I really like under Mac OSX is this app called Alfred. It is a powerful launcher that is very similar to QuickSilver. Having used both, I settled with Alfred for my personal preference.

Alfred is a free app but you can really extend the functionality by using PowerPack which you have to pay. I went ahead and got the powerpack and I never regretted it since. You can do custom searches, shell scripts, include Automator and Workflows into the app.

The link here provides some extensions that are extremely useful. So based on some of these extension scripts, I wrote my own extension to the app which I personally use a lot. It is a very simple nslookup tool that lets you do nslookups inside Alfred and posts the results in Growl. It also copies the output to your clipboard if you want to paste it. Here is some screenshots:

NSLOOKUP UTILITY

RESULTS FROM GROWL NOTIFICATION

There are bunch of extensions out there, and the above example just uses three lines of bash code.

You can download the Nslookup Utility here.


Nov 8 2011

Harden your Zones through RBAC on OpenIndiana 151a

RBAC stands for Role Based Access Control and it is designed as a security feature in Solaris Systems. Since RBAC is greatly documented in here I am not going into the details very much, but instead show a scenario below where I kind of stumbled on at work.

Help, I have too many zones and I need someone to manage some of them

I wanted to let one of the normal users to be able to manage and login to a zone in the system where the user did not have any permissions to do so. Depending on your organization letting a specific user to manage zone(s) may be a desirable solution if your application needs management on a daily basis.

So to make things a bit easier, I went ahead and set up this OpenIndiana environment with two zones and an additional user.

drende@oi151a:~$ uname -a
SunOS oi151a 5.11 oi_151a i86pc i386 i86pc Solaris
drende@oi151a:~$ cat /etc/release
                      OpenIndiana Development oi_151a X86
        Copyright 2010 Oracle and/or its affiliates. All rights reserved.
                        Use is subject to license terms.
                           Assembled 01 September 2011

Let’s create a user called “macuser1″:

drende@oi151a:~$ sudo useradd -d /export/home/macuser1 \
-m -s /bin/bash -c "macuser1" macuser1
Password:
80 blocks

Listing the zones in the system:

drende@oi151a:~# zoneadm list -civ
  ID NAME             STATUS     PATH            BRAND    IP
   0 global           running    /               ipkg     shared
   1 zdev             running    /zones/zdev     ipkg     shared
So macuser1 is a normal user, let's make it try to login one of the zones:
macuser1@oi151a:~$ pfexec zlogin zdev
zlogin: You lack sufficient privilege to run this command (all privs required)

The system efficiently tells you that macuser1 lacks sufficient privileges. What do we do? Enter RBAC

/etc/user_attr is a database in the system where it associates users with roles and its profiles.

So lets add the following line into /etc/user_attr:

macuser1::::type=normal;auths=solaris.zone.login,solaris.zone.manage;profiles=Zone Management

Log out/Logback and use zlogin:

macuser1@oi151a:~$ pfexec zlogin zdev
[Connected to zone 'zdev' pts/3]
Last login: Sun Oct 30 23:06:51 on pts/2
OpenIndiana (powered by illumos)    SunOS 5.11    oi_151a    September 2011
root@zdev:~#

macuser1 was able to login because in /etc/security/exec_attr we have the following entries among the many:

root@zdev:~# grep Zone /etc/security/exec_attr
Zone Management:solaris:cmd:::/usr/sbin/zlogin:euid=0
Zone Management:solaris:cmd:::/usr/sbin/zoneadm:euid=0
Zone Security:solaris:cmd:::/usr/sbin/txzonemgr:uid=0
Zone Security:solaris:cmd:::/usr/sbin/zonecfg:uid=0

Zone Management profile can zlogin with effective uid = 0. The file /etc/security/exec_attr contains commands to a profile ( In our case it is “Zone Management”  that can be associated with mac1user account among others.

Say that you want this user to manage ZFS file system? No problem, RBAC can do that for you:

macuser1@oi151a:~$ pfexec zfs create rpool/export/test
cannot create 'rpool/export/test': permission denied
root@oi151a:~# cat /etc/user_attr | grep macuser1
macuser1::::type=normal;auths=solaris.zone.login,solaris.zone.manage;\
profiles=Zone Management,ZFS File System Management
macuser1@oi151a:~$ pfexec zfs create rpool/export/test
macuser1@oi151a:~$ zfs list
NAME                             USED  AVAIL  REFER  MOUNTPOINT
rpool                           26.3G  21.7G    45K  /rpool
rpool/ROOT                      2.01G  21.7G    31K  legacy
rpool/ROOT/openindiana          2.01G  21.7G  1.92G  /
...
rpool/export/home                104K  21.7G    33K  /export/home
..
rpool/export/test                 31K  21.7G    31K  /export/test

Neat, so you can now setup which user in your organization can do what in the system by using RBAC locally. If you want your user to execute all commands with euid=0 then there is a profile in /etc/security/exec_attr called “Primary Administrator”. It goes without saying that this setting for a normal user is highly catastrophic and dangerous. It is out there though.

Above was just an example, but let’s go back to hardening the zones.

Now let’s take a look at another example to  see what you can do with RBAC. If you have SmartOS, Openindiana installed in your system, you can do more interesting things.

In my OI151a system I have now two zones:

root@oi151a:~# zoneadm list -civ
  ID NAME             STATUS     PATH           BRAND    IP
   0 global           running    /              ipkg     shared
   1 zdev             running    /zones/zdev    ipkg     shared
   3 zdev2            running    /zones/zdev2   ipkg     shared

zdev and zdev2. But you want your user login zdev2 and manage that zone only. How do you set up such scenerio?

Let’s look at /etc/user_attr again:

root@oi151a:~# cat /etc/user_attr | grep macuser1
macuser1::::type=normal;auths=solaris.zone.login,solaris.zone.manage;profiles=Zone Management

Notice auths=solaris.zone.login,solaris.zone.manage line. Currently the user is setup to login to all zones and manage all the zones. By manage we mean that the user is able to use start/stop and reboot the zone.

Ok, so let’s limit the user only login to zdev2 and manage that zone:

root@oi151a:~# cat /etc/user_attr | grep macuser1
macuser1::::type=normal;auths=solaris.zone.login/zdev2,solaris.zone.manage/zdev2;profiles=Zone Management

Now the line contains /zdev2 in both solaris.zone.login and solaris.zone.manage. You can use comma separated zone names here.

Instead of zdev2, I’ll try to login zdev with macuser1:

macuser1@oi151a:~$ pfexec zlogin zdev
zlogin: macuser1 is not authorized  to login to zdev zone.

and now I try zdev2 and I expect it to work:

macuser1@oi151a:~$ pfexec zlogin zdev2
[Connected to zone 'zdev2' pts/3]
Last login: Thu Nov  3 22:45:57 on console
OpenIndiana (powered by illumos)    SunOS 5.11    oi_151a    September 2011
root@zdev2:~#

Let’s try to halt zdev and zdev2 zones with macuser1:

macuser1@oi151a:~$ pfexec zoneadm -z zdev halt
zoneadm: zone 'zdev': User macuser1 is not authorized to halt this zone.
macuser1@oi151a:~$
macuser1@oi151a:~$ pfexec zoneadm -z zdev2 halt
macuser1@oi151a:~$
macuser1@oi151a:~$ zoneadm list -civ
  ID NAME             STATUS     PATH           BRAND    IP
   0 global           running    /              ipkg     shared
   1 zdev             running    /zones/zdev    ipkg     shared
   - zdev2            installed  /zones/zdev2   ipkg     shared
macuser1@oi151a:~$ pfexec zoneadm -z zdev2 boot
macuser1@oi151a:~$
macuser1@oi151a:~$ zoneadm list -civ
  ID NAME             STATUS     PATH           BRAND    IP
   0 global           running    /              ipkg     shared
   1 zdev             running    /zones/zdev    ipkg     shared
   4 zdev2            running    /zones/zdev2   ipkg     shared

Very nice, I now have this macuser1 managing zdev2 zone. There are many other interesting things you can do with RBAC and you can find most of the documentation here.

 


Oct 14 2011

What it means to be Modern and Innovative in Computing

Innovation, it is a big word and it describes whole range of things. I feel like where ever I look, it is either dying very early in the process or the people who innovates leaves us with big responsibilities. Lately I am very saddened by the way the business of technology works. Some big (X) company buys some other big (Y) company and in the process some potential of innovation may die with it.

People, who innovate on the other hand when they go away, they leave behind a tremendous amount of work and responsibility to us. We owe them and we owe them big. Dennis Ritchie, the creator of C Language with Ken Thompson, recently passed away and my initial reaction to the news was remembering  all the things that he contributed to the Modern Technology today.

When I started studying Computer Science, programming with C was de facto standard in the schools, Such a compact and powerful language that could simply say from “Hello World!” to “Unix” was my entrance to the world I live in today. It is the aorta of the Operating System I love and I use today. When asked to Donald Knuth about what are the most elegant characteristics of a programming language and what it should be in the next 50 years, he said ” The concept of pointers in C is elegant”.

Dennis Ritchie gave us this concept almost 40 years ago. Considering that the language is still used today and one of the most powerful operating systems is written in it, I consider this innovative and modern in the history of Computing today. That’s why we owe him big and that’s why we have to keep going and innovate on things like C/C++ and Operating Systems. So thank you Dennis Ritchie for all the contributions and innovations you gave us for today’s technology.