Working On My Personal Projects

So, been a while since I’ve blogged here. I’ve been working hard at finishing up my Bachelor’s degree and working on some new projects as well. So, as always, things are busy. If you would like to follow my personal portfolio and all my other stuff go to portfolio.phxis.net. This contains all my school work that I’ve done throughout my degree program, yet I’m using Google Docs to share the content and it “should” display for everyone to see. But of course things are a little finicky at the moment and you need to click the external link to get to some of the actual content.

Aside from all that, I’ve been working on quite a few different projects. Working with a friend of mine, we’ve been working hard at specializing our skills in MongoDB and ElasticSearch. And as of right now, we are but a handful of developers in the Phoenix area that are “experts” in these two services. Additionally I’ve been working with Node.js for the server language developing our RESTful API endpoints. These endpoints will fire off worker services written to work with the distribute queue server, Gearman.

Still working some PHP and Laravel stuff now, and I’m really enjoying the direction of the framework. It’s been easy to work with and I’m looking forward to the new 5.0 release.

13. November 2014 by phxis
Categories: uncategorized | Leave a comment

Rebranding 3.0… Let’s Try This Again

It’s been almost 3 years since I swore I was going to post more, and here we are with 3 additional posts and then crickets. Nada, zip, zero… You get the idea. So things have been busy, like real busy. In that time, I’ve met my wife who I love to the ends of the world, dropped out of corporate america and have been focused on consulting and contracting development. I’ve partnered up with a good buddy of mine and we’re working on a new startup project that will take the online content industry by storm. So, as you can see, I’ve got a lot of things going on.

Things in the pipeline

  • Re-theming this site. It’s in dire need of a facelift. And while I’m not a designer by trade, I’m going to make some much needed visual changes. Simple stuff, but I feel it’ll make a big difference in the look and feel of the site.
  • Adjust my portfolio site to utilize this blog instead of managing two different sites. I am one person and my company is me (currently) so it’s time to simplify this mess.
  • Working on a new version of a project I did back in 2001 that was written in classic ASP. This time around, it’ll be a single page application written in AngularJS and all data stored within MongoDB. This is the main project I will be writing about here as I progress through my experiences.
  • Node.js scripting and data crunching for the startup project. This will also be a MongoDB backend and will utilize Socket.IO communication to manage the data between scripts. I will post a few things about this here, but it’s not public yet, so I can’t say much… shhhhh.

Well, if you haven’t figured it out, I’m switching gears from PHP development to more JavaScript development using the MEAN stack. I’m also stepping up into more architecture roles and jobs, designing out how the systems and software are going to work together.

That’s it for now. I’m not going to promise anything this time, but I do want to write more, both for my sanity and the community.

08. April 2014 by jeffdupont
Categories: life, ramblings | Leave a comment

The Galaxy Nexus / ICS

Just finished watching the broadcast announcement between Google and Samsung. The first thing that comes to mind is, “WOW”. Ok, so I’ve always been more of an Android user than I have ever been an iOS user but some of these new, subtle, changes to the OS are sweet! I’m really looking forward to the new Ice Cream Sandwich version of Android and the new Galaxy Nexus (though I wish they kept it as the Nexus Prime). I just seriously hope that they’re going to release it across all networks in the US, specifically T-Mobile. I know TMo may not be the greatest network, but I’ve been with T-Mobile since the first release of Android, so I see it as THE Android carrier. Don’t even bring up Verizon and their “Droid” bullshit. What they’ve done to the cute cuddly little green android is outrageous. I know at some point I’ll probably join into the LTE network and succumb to their bullshit, but for now, I’m holding firm and staying with T-Mobile. The first true Android carrier.

That is all.

18. October 2011 by phxis
Categories: ramblings | Tags: , , , , , , , | Leave a comment

The new iPhone 4s

Well I just finished watching the live blogs for the Apple event this morning and I have to say I’m severely disappointed. Don’t get me wrong, I’m not an iPhone user. I love my Nexus S Android phone. But I was really interested in what Apple was releasing to compete with the soon to be announced Nexus Prime. I would’ve liked to have seen a newly designed iPhone instead of just an upgraded phone. Especially after, what, 18 months?! Anyway, what do you think, are the changes really worth the upgrade?  Or should they have just named this the iPhone 5 and given the masses what they were expecting?

04. October 2011 by phxis
Categories: news | Tags: , , , | Leave a comment

Another Year…

Wow, that was fast… Another year has gone by and I swore that I would blog more, whoops! Well hopefully things will become more of a routine and I’ll update some of the new things that have been going on. As for right now, just got back from an awesome trip to Tahoe for a wedding and now I’m working on something special for the bride and groom. I’m also leaving to go back home to Boston in a couple weeks to see the fam and catch a Red Sox game. That should be fun, the Sox have been red hot lately. I can’t wait! Anyway, that’s that for now, I’ll update some more stuff soon… I promise! 🙂

19. June 2011 by phxis
Categories: news | 2 comments

In The Works

Hey everyone,
I know it’s been quite a while since I’ve posted anything. Between a new full-time job, late night development sessions, and now back in school, things have been extremely B-U-S-Y. However, I’ve got some things in the works right now that I feel are going to be HUGE!!! For starters there’s a new event management framework soon to be released along with many new Android apps. I’m also working on changing the theme for this blog to something that I feel will fit better with the direction of the company. Check back soon to keep up on all these new changes!

03. June 2010 by phxis
Categories: news | Leave a comment

How To: Setting Up Trac on a Shared Server

I’ve spent countless days scouring the web on a simple way to install Trac 0.10.4 on a host that allowed ssh access. Now, throughout my research, the two hosts that have the best chance of successful install are Hostmonster and Bluehost. Both offer extremely low priced options, and with the features they provide, you can’t go wrong either way. Now, I’m running on Hostmonster and haven’t been able to test this with Bluehost, but I’ve kept the steps pretty simple and generic so they should work without a problem. If anyone does have any issues or come across any differences, let me know so I can update this How To.

Anyway, I’ve compiled this How To together for others that may be having difficulties. These are the exact steps and commands that I ran in my ssh session to get everything up and running. All the code snippets are ready to run, so just copy & paste them into your terminal. After you’re done you should hopefully have a working Trac site, with the bonus of a working subversion.

The following are a list of sites that I managed to pull my information from:

The Requirements

These are mainly pulled from the Trac requirements

  • Linux
  • Apache
  • SSH access

Everything else that is required will be installed and setup in the following steps.

The Goods

First setup the three directories that we’ll be using throughout this How To. It’s best to create these directories in your ~/home directory.

mkdir install_files
mkdir svn
mkdir trac_sites
mkdir packages

Pretty self-explanatory, install_files will be a location where you’ll download all the needed files to, svn will be where you will house all your projects under version control, trac_sites is the location where the Trac projects will be stored, and finally packages will be where we are going to install and run all the needed scripts.

Setting Your Environment

There are a couple files that you will need to modify. The first is to add a few variables to your ~/.bash_profile.

export PYTHONPATH="$HOME/packages/lib/python2.5/site-packages"
export LD_LIBRARY_PATH="$HOME/packages/lib"
export PATH="$HOME/packages/bin:$PATH"

Save the file and then run.

source ~/.bash_profile

Next is your ~/.bashrc file, just add the following line to the end.

PATH=~/packages/bin:$PATH

Save the file and then run.

source ~/.bashrc

These will setup all the needed references for the following steps.

Installing Python

Trac requires python in order to run, so I decided to install version 2.5.2. I chose this version because it already includes the SQLite database, which is another requirement of Trac. First, make sure you’re in the install_files directory then run:

wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tar.bz2
tar xjf Python-2.5.2.tar.bz2
cd Python-2.5.2
make clean
./configure --prefix=$HOME/packages
make && make install
cd ..

Installing Clearsilver

You should be back in the ~/install_files directory. If you’re not, navigate yourself back so you are for the next step. Clearsilver is part of the templating system that Trac uses. Because I went with version 2.5.2 of Python you need to make sure that you install version 10.4+ of Clearsilver.

wget http://www.clearsilver.net/downloads/clearsilver-0.10.4.tar.gz
tar zxf clearsilver-0.10.4.tar.gz
cd clearsilver-0.10.4
make clean
sed -i "s@/usr/local/bin/python@/usr/bin/env python@g" \
scripts/document.py
PYTHON_SITE=`$HOME/packages/bin/python -c \
"import sys; print [path for path in sys.path if \
path.find('site-packages') != -1][0]"` \
./configure --with-python=$HOME/packages/bin/python \
--prefix=$HOME/packages \
--disable-ruby --disable-java --disable-apache --disable-csharp --disable-perl
make && make install
cd ..

Installing easy_install

This will setup and install the Python module easy_install. Trac uses this command frequently to install additional plugins and addons. Again, make sure you’re in the ~/install_files directory.

wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py --prefix=$HOME/packages

Installing SWIG

SWIG are the bindings that Trac uses to work and communicate with Subversion.

wget http://dl.sourceforge.net/sourceforge/swig/swig-1.3.31.tar.gz
tar zxf swig-1.3.31.tar.gz
cd swig-1.3.31
make clean
./configure --prefix=$HOME/packages
make && make install
cd ..

Installing Subversion

Setting up Subversion is a little more difficult than the other packages.  I had a difficult time getting everything to work properly with Trac. First, I needed to make sure that I had the dep package for Subversion as well. These included the tools to communicate with Apache (apr, apr-util, and neon). However, even after configuring the package with the dep tools, I was still getting an error when trying to use Subversion. The solution turned out that I needed to compile the tools separately prior to compiling Subversion. I’ve already taken the liberty of breaking out those steps for you here. But first, let’s get the Subversion files… you are again in the ~/installed_files directory, right?

wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.bz2
wget http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.bz2
tar xjf subversion-1.4.6.tar.bz2
tar xjf subversion-deps-1.4.6.tar.bz2
cd subversion-1.4.6

apr

cd apr
make clean
./configure --enable-shared --prefix=$HOME/packages
make && make install

apr-util

cd ../apr-util
make clean
./configure --enable-shared --prefix=$HOME/packages \
--with-expat=builtin --with-apr=$HOME/packages \
--without-berkeley-db
make && make install

neon

cd ../neon
make clean
./configure --enable-shared --prefix=$HOME/packages \
--with-libs=$HOME/packages --with-ssl
make && make install

and finally, subversion

cd ..
make clean
./configure --prefix=$HOME/packages --without-berkeley-db \
--with-editor=/usr/bin/vim --with-apr=$HOME/packages \
--with-apr-util=$HOME/packages --with-neon=$HOME/packages \
--with-swig=$HOME/packages/bin/swig \
--with-ssl --with-zlib --with-expat=builtin
make && make install
make swig-py && make install-swig-py
cd ~/packages/lib/python2.5/site-packages
echo $HOME/packages/lib/svn-python > subversion.pth
ln -s ~/packages/lib/svn-python/libsvn
ln -s ~/packages/lib/svn-python/svn
python -c "from svn import client"
cd ~/install_files

Note: At times I would get errors when compiling these packages. I’m not sure why, but if I ran the make and make install on separate lines, it seemed to fix the issue.

Create your first repository

Just run the following command to create a new repository. Replace the {rep_name} with whatever you’d like to call your project.

svnadmin create $HOME/svn/{rep_name}

Installing Trac

For this How To I decided to go with version 0.10.4 of Trac. I attempted to try for version 0.11 but I had difficulty logging in to administer the site and never found a solution to the problem.

wget http://ftp.edgewall.com/pub/trac/trac-0.10.4.tar.gz
tar zxf trac-0.10.4.tar.gz
cd trac-0.10.4
python setup.py install --prefix=$HOME/packages
cd ..

Creating your first environment

The next few commands will help you setup your first environment, including setting up permissions. For this, I’ve gone with a pretty strict set of permissions. I only want users that I give access to, to be able to view my source code and edit the wiki pages. You can, of course, set it up however you would like. Replace {trac_env} with whatever environment name you would like.

trac-admin $HOME/trac_sites/{trac_env} initenv

Permissions

trac-admin $HOME/trac_sites/{trac_env} permission remove anonymous '*'
trac-admin $HOME/trac_sites/{trac_env} permission remove authenticated '*'
trac-admin $HOME/trac_sites/{trac_env} permission add admin TRAC_ADMIN
trac-admin $HOME/trac_sites/{trac_env} permission add {admin_username} admin
trac-admin $HOME/trac_sites/{trac_env} permission add anonymous WIKI_VIEW
trac-admin $HOME/trac_sites/{trac_env} permission add authenticated ROADMAP_VIEW WIKI_MODIFY
trac-admin $HOME/trac_sites/{trac_env} permission add authenticated TICKET_VIEW TICKET_CREATE
trac-admin $HOME/trac_sites/{trac_env} permission add authenticated REPORT_VIEW MILESTONE_VIEW
trac-admin $HOME/trac_sites/{trac_env} permission add {authenticate_username} authenticated

Installing Trac Modules

There are a lot of modules out there that expand Trac to do quite a bit beyond it’s initial setup. I’ve only needed three additional modules, WebManager, AccountManager and Pygments.

WebManager

This is a MUST! Allows you to manage the Trac environment and settings directly from the web.

svn co http://svn.edgewall.com/repos/trac/sandbox/webadmin/
cd webadmin
python setup.py egg_info
python setup.py bdist_egg
cd dist
easy_install --prefix=$HOME/packages *.egg
cd ~/install_files

AccountManager

Better handles the login and users of the Trac environment to the web.

svn co http://trac-hacks.org/svn/accountmanagerplugin/0.10 accountmanagerplugin
cd accountmanagerplugin
python setup.py bdist_egg
cd dist
easy_install --prefix=$HOME/packages *.egg
cd ~/install_files

Pygments

Pygments is a plugin that will color the syntax of your code when you’re browsing the source. I chose this plugin because I do a lot of PHP programming, and Trac did not display PHP scripts at all without it.

easy_install --prefix=$HOME/packages Pygments

Once you’ve installed all the plugins, they now need to be configured in the trac.ini file. This file is located within your trac environment. If you’ve been following these steps, it should be located at ~/trac_sites/{trac_env}/conf/trac.ini. Use your editor of choice to modify this file and add the following to the end of it. But before you do that, let’s add an initial user. These must be the same usernames that you created when setting up the permissions for the trac environment.

htpasswd -c ~/trac_sites/trac.htpasswd {username}

Append this to the trac.ini file.

[account-manager]
password_format = htpasswd
password_file = /home/{your username}/trac_sites/trac.htpasswd

[components]
acct_mgr.* = enabled
trac.mimeview.api.plaintextrenderer = disabled
trac.mimeview.enscript.enscriptrenderer = enabled
trac.mimeview.php.phprenderer = disabled
trac.mimeview.silvercity.silvercityrenderer = disabled
trac.web.auth.loginmodule = disabled
tracpygments.* = enabled
webadmin.* = enabled

Finalize

Well, you’ve made it this far. Only a few more steps and you should be good to go!

Making Trac Web Accessible

These next few steps will allow you to access Trac from the web. Now, I’ve set it up so that Trac is a subdomain of my site. So it’s something like trac.your-domain.com. Within the root of my site I’ve created a trac directory for the subdomain to point to. Again, this is preference, and you can have it however you’d like. But the first step is to navigate to whatever directory that you’d like to view Trac from. Once there you’re going to create a new file index.cgi. Since it’s a .cgi file, you must make sure that it has execute permissions. Then open your favorite editor and drop this in.

#!/bin/bash
export HOME="/home/{username}"
export TRAC_ENV="$HOME/trac_sites/{your trac project id}"
export PYTHONPATH="$HOME/packages/lib/python2.5/site-packages"
export PATH="$HOME/packages/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/packages/lib"
exec $HOME/packages/share/trac/cgi-bin/trac.cgi

Next we’re going to make a link to the common files that Trac uses to help speed up the display of the page. Things like the stylesheets, images, and javascript that help the site function. Again, make sure you’ve navigated to the directory where you are viewing Trac from.

mkdir chrome
ln -s $HOME/packages/share/trac/htdocs ./chrome/common

Finally, we need to modify the .htaccess file so that the site knows that index.cgi is the default page of the directory and we must make sure that mod_rewrite is on. So open .htaccess with your editor and drop this in.

Setup Rewrite Rule
Edit .htaccess located in the {domain name} directory
DirectoryIndex index.cgi
Options ExecCGI FollowSymLinks

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.cgi/$1 [L]

And with that, you’re done! Ok, not quite… this final snippet is to replace and clean up the links within the Trac environment.  Since every link will pass through index.cgi the addressbar will always show it in the link. Like so: http://trac.your-domain.com/index.cgi/wiki. You can fix this like so, first navigate to this directory.

cd $HOME/packages/lib/python2.5/site-packages/trac/web

Then make a backup of the api.py file

cp api.py api.py.backup

Now open api.py in your editor and find this line.

base_path = property(fget=lambda self: self.environ.get('SCRIPT_NAME', ''), doc='The root path of the application')

and change it to

base_path = property(fget=lambda self: os.path.dirname(self.environ.get('SCRIPT_NAME', '')), doc='The root path of the application')

NOW, you’re done! Please feel free to leave a comment. Remember, results may vary, I tried to keep this as generic as possible, but sometimes things don’t always work the way you expect them.

25. December 2008 by phxis
Categories: how to | Tags: , , , | 2 comments