For a brief rundown on exactly why this library came into being, you can check out the blog post I wrote about it.
The short version it is an object oriented approach to storing and retrieving general site options. It is as simple as the following:
\Option::set('setting name', 'setting value'); echo \Option::get('setting name', 'default value'); // prints "setting value"
This library comes pre-packaged with a bunch of different drivers for maximum compatibility. If none of the default drivers work for you, you can use your own by implementing a simple interface also included in the library.
What is The Sodium Ranch? According to a quick excerpt from their website:
The Sodium Ranch is a polyvalent entertainment company based in Brooklyn, NY. Founded in 2009, The Ranch is a home base and incubator for works in cinema, photography and fine art.
They approached me asking if I could do some work for them. They rent out equipment to their customers, but their store needed some work.
The first problem was that the store owners had a hard time telling what items were profitable, what items were frequently out of stock, and when items were rented most often. I built them a simple reporting system to give them this basic information.
I also added the ability to drag-and-drop store categories, as well as reorder both store and portfolio items.
Overall a rather straightforward project, but I definitely enjoyed working with all the people involved.
This is an older project, but I host and manage the UOLTT website.
Basically, we are a group of gamers with WAY too much free time on our hands. To the point where we are developing mobile apps, market crawlers, and crowd-sourced intelligence information.
You can also check out its beta site, but there is not too much there at the moment.
Still very much an ongoing project, I hope to be able to share more information on my portfolio soon!
I made a contribution that I thought might be worthy of putting on my portfolio, and heck its my portfolio so why not?
I use Laravel Scout in one of my projects, and use the TeamTNT Scout Driver with it. The driver does a fantastic job, but has one major issue. If a model you are trying to make searchable has an accessor that does does not have a column in the applications database (for example, you could have a 'first_name' and 'last_name' and an accessor for 'full_name'), when you run the import command it will throw an error saying it is trying to select a nonexistant column from the database.
Indeed it is. When the library creates the search indexes it selects the array keys of the models "toSearchableArray()" method as columns in a new query, assuming that all of the array keys there will have a correlating column in the database. In many cases this is not so, so in order to make this library work in my project without going out of my way to overwrite the "toSearchableArray()" method on every model I wanted searchable, I submitted a simple pull request.
The solution to this problem was quite simple. Before performing the select statement I added a quick lookup too get all of the available columns on that table.
$availableColumns = \Schema::getColumnListing($model->getTable());
I then grabbed all of the keys in the "toSearchableArray()" method.
$desiredColumns = array_keys($model->toSearchableArray());
And intersected those two arrays. This way only columns that actually existed in the database would be selected from.
$fields = implode(', ', array_intersect($desiredColumns, $availableColumns));
Its not much, but its my contribution to the open source world!
I made this site with a friend in mind. He needed to make frequent off-site backups of one of his servers, but had an incredibly slow Internet connection and aggressive bandwidth caps. He had a bash script to upload files to DropBox, but it was slow and cumbersome.
We were talking about the problem one day and he mentioned that he wished there was a site out there that he could just tell to “Hold This” file for a little bit. And thus the site was born.
The site is not meant to be too complicated. It has a simple web interface, an easy to use API, and that’s it.