unitedworx

Managing Director at United Worx Ltd

Hire Me

Experience

34,210

16 Best Reply Awards

  • Member Since 4 Years Ago
  • 325 Lessons Completed
  • 0 Favorites

20th April, 2017

unitedworx started a new conversation How To Get More Info On TokenMismatchException Log Entries? • 1 year ago

I see a few TokenMismatchException entries in my logs every day however I have no idea on the route these occurred or if its a logged in user with their session expired or a robot failing to maliciously submit a form automatically.

How do I get more insight on these? how do you guys handle these? Do you assume that its csrf doing its job to protect?

14th March, 2017

unitedworx left a reply on Intl-tel-input Problem • 1 year ago

In the project repo there is a working version posted in closed issues. Might want to look how that works, tested it and works fine.

https://dl.dropboxusercontent.com/u/25298147/Vue.zip

P.S. thanks for pointing out to this I will come handy in a project I am working on where I want to nudge users on providing full phone numbers with int code!

unitedworx started a new conversation How To Automatically Make Sure I Have --production Assets On Deployment? • 1 year ago

How do you guys/gals make sure you have production assets on deployment?

At the moment I use Envoyer to deploy and I need to remember to manually run "gulp --production" before pushing to my remote repo. This is flawed since some times I might forget to do so and my assets wont be 300KB they will be 5-6MB :) which is a problem!

I think I have 2 options to handle this.

  1. A pre-push hook to run "gulp --production" and commit anything inside the build directory and then proceed to push to my remote. I have no idea how to code this thought! Anyone doing this to share your pre-push hook script?

  2. bite the bullet and install node/gulp/yarn on my server and make sure that part of my Envoyer deployment scripts run "yarn install" and then "gulp --production" on deployment. I was highly against this since node_modules is fairly big around 200MB and npm install is very slow! Envoyer keeps 5-6 previous revisions so its actually 200MB*5=1GB of wasted space on my server, per project! I guess I can delete node_modules after running "gulp --production" as part of my deployment script to keep things clean and now that I am using yarn and its caching stuff It runs considerably faster so I suppose it wont take long. Anyone following this approach? Any advise? for or against this approach?

11th October, 2016

unitedworx left a reply on Fresh Laravel Setup And Vue 2 Wont Work :( • 2 years ago

note to self! remember to add the script and the end of the page! and save the day!

unitedworx left a reply on Vue.js 2 And Laravel 5.3 Blank Page • 2 years ago

10 years web development and I feel like a rookie!

Spend the whole day, full 8 hours trying to trouble shoot this!

Once I left the office it hit me that problem was that script tag needed to be place and the end of the page! I guess thats what happens if you have lived inside jQuery document ready functions all you life!

unitedworx left a reply on Vue.js 2 And Laravel 5.3 Blank Page • 2 years ago

yes thats what I did! a clean laravel 5.3 setup using composer create-project --prefer-dist laravel/laravel blog and vue 2 wont work as its supposed to out of the box!

unitedworx left a reply on Vue.js 2 And Laravel 5.3 Blank Page • 2 years ago

I have trouble getting vue 2 to work with laravel. I even setup a clean setup with laravel and still gives me

[Vue warn]: Cannot find element: #app

I thought I was doing something wrong but if I can not get it to work out of the box, my guess is that the default setup is broken!

any ideas?

unitedworx left a reply on Fresh Laravel Setup And Vue 2 Wont Work :( • 2 years ago

its a bare setup


require('./bootstrap');

Vue.component('example', require('./components/Example.vue'));

const app = new Vue({
    el: '#app'
});

unitedworx left a reply on Fresh Laravel Setup And Vue 2 Wont Work :( • 2 years ago

yes laravel-elixir-vue-2 is part of package.json and gulpfile.js

unitedworx started a new conversation Fresh Laravel Setup And Vue 2 Wont Work :( • 2 years ago

I cant get vue 2 running on my setup so I even setup a new empty laravel project and I am still getting [Vue warn]: Cannot find element: #app

and I do have an element in my template!

basically I just setup a fresh laravel setup using composer create-project --prefer-dist laravel/laravel blog run npm install and then gulp and then simply added <script type="text/javascript" src="js/app.js"></script> in the head in welcome.blade.php along with <div id="app"> <example></example></div> inside the body but still cant get it to work :(

Anyone else having a hard time with vue 2 on a fresh laravel setup?

5th October, 2016

unitedworx left a reply on Struggling To Load Pickadate With Webpack • 2 years ago

it appears that pickadate latest version is not webpack compatible and loading the master branch instead which contains a fix for webpack solved my issue

 npm install -D https://github.com/amsul/pickadate.js/tarball/master

unitedworx started a new conversation Struggling To Load Pickadate With Webpack • 2 years ago

I all,

I am trying to move to npm/vue2/webpack with elixir and I got things working with the basic setup (query,bootstrap) however I am trying on loading query modules such as pickadate and it keeps failing .

pickadate does not seem to wont to work with webpack and says it cant resolve a dependancy.

here is the app.js lines

require( "../../../node_modules/pickadate/lib/picker.js");
require( "../../../node_modules/pickadate/lib/picker.date.js");
require( "../../../node_modules/pickadate/lib/picker.time.js");

and the error

message: './~/pickadate/lib/picker.date.js\nModule not found: Error: Can\'t resolve \'picker\' in \'/Users/parisparaskevas/Dropbox/www/dev.mysite.com/node_modules/pickadate/lib\

28th July, 2016

unitedworx left a reply on Laracon Livestream • 2 years ago

@Prullenbak when you buy the livesteam you get access to the videos to play them again any time you want the next day and as many times you want. i suppose the will make it into youtube a few days later... probably only taylor know when they will be available in youtube.

livesteam was very laggy for the first talks but then was very smooth on the later talks. Hopefully the videos will be available today in streamacon.com so i can watch the vuejs talk i missed!

27th July, 2016

unitedworx left a reply on Laracon Livestream • 2 years ago

When you signup for the lifestream you can either watch it live or watch the talks the next day. i suppose they will make it to youtube a couple of weeks later judging from past years.

@SaeedPrez what i wanted to say is that the livestreaming is not expensive so if these talks are of interest watching them live or early is better than later. I would love to go to a laracon at some point but tickets, flights, accommodation makes it a bit out of budget for me so watching the event live is very good.

unitedworx left a reply on Laracon Livestream • 2 years ago

@ohffs lifestream audio is very very laggy so you doing a better job :)

unitedworx left a reply on Laracon Livestream • 2 years ago

Why wait for a week or so if you can buy it and watch it live? Its not that it costs a fortune!

unitedworx left a reply on Laracon Livestream • 2 years ago

look form an email from [email protected]

got mine but thought it was spam since it has zero mention of laravel or laracon in the subject or body of the email!

28th June, 2016

unitedworx left a reply on Count Array For Specific Value - Laravel 5.2 • 2 years ago

$collection = collect($arr);
  $rentals = $collection->where('type', 1)->where('commercial', 1);
  dd($rentals->count());

27th June, 2016

unitedworx left a reply on Laravel Subdomain Sites Hosts As New Project Or Not? • 2 years ago

its up to you to decide. if most code across all 3 subdomain is the same then you are better to sticking to a single code base! if your code is vastly different between all 3 subdomain then you might be better to split them out.

its going to be a lot simpler to say if ($subdomain=='explore'){ App::down(); } than maintaining 3 different setups!

unitedworx left a reply on Count Array For Specific Value - Laravel 5.2 • 2 years ago

its not array only you need but array where

$rentals  = array_where($arr, function($key, $value) {
        return (($key=='type') && ($value==1));
    });

however i suggest using collections so you could do this a bit better

$collection = collect($arr);
$rentals = $collection->where('type', 1);
dd($rentals->count());

18th April, 2016

unitedworx left a reply on Anyone Else Using Twig Instead Of Blade? • 2 years ago

as barry said macros and filters help you present your data, they belong in your views!

I love both about twig! actually 1 thing i hate about laravel and blade is that i see many packages that put a lot of html presentation into packages. These are all stuff that are supposed to be in your views! with twig you simply define the macros in your view so you have 0 html code in your controllers or services.

Actually laravel's own pagination code is damn hard to customize since it lives inside php code. if this was done using macros then you would have code sitting in your views that you can easily customize. I reported this to Taylor a while ago and he said he would look into it but I am guessing it's not in his priority to move presentation of the pagination into the views where it belongs.

One thing that twig helped me is have 0 html code in my app, if its html code then its in my views, and only in my views.

unitedworx left a reply on Anyone Else Using Twig Instead Of Blade? • 2 years ago

There is noting you can't call in TWIG! Just read up on how to do stuff instead of giving up! You simply expose the facades you want to call. So you can expose your services or anything you really want or functions or anything really!

Been using twig together with Laravel and honestly i can't think of living without twig! Makes your code ALOT cleaner and give you a lot of helpers that you down get with blade. Just check the official twig documentation on the filters and stuff available.

Of course if you don't feel like using twig then don't push yourself! if you get to know twig thought then you will definitely love it. I always thought of using a tempting engine is pointless but when you get to a certain point that you feel your views code is littered with logic then you definitely need to stand back and rethink on using a template engine. blade is fine as well, but twig keeps things cleaner and simpler.

P.S. I feel that blade is catching up by recently introducing service injection! https://laravel.com/docs/5.1/blade#service-injection in twig you simply expose the facades to your services if you want and you can call it for anywhere!

8th April, 2016

unitedworx left a reply on Gate Works Without The Authorizable Trait? • 2 years ago

Just checked this traits code and realized that its just a proxy to the gate facade so i suppose i i down use this trait it wont affect the overall operation of the Gate!

https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Auth/Access/Authorizable.php#L16

although if anyone is using Zizaco/entrust together tis policies with the Gate i am all ears with the approach the followed.

unitedworx started a new conversation Gate Works Without The Authorizable Trait? • 2 years ago

anyone knows if Gate works fine without the Authorizable trait?

its can method clashes with a can method provided with Zizaco/entrust and since i want to use policies in conjunction with the roles/permissions i have in place via Zizaco/entrust i want both to work fine.

p.s i understand that by not adding the Authorizable trait i want be able to use the can method on users however i down plan on doing so since i plan on doing all my policy checks via the Gate facade!

15th March, 2016

unitedworx left a reply on How Do I Setup 2 Homestead Boxes? ( One With Php 5.6 And One With Php 7) • 2 years ago

i gave up on using homestead since mamp pro I use was ten times simpler to use and even switch between php version. only reason i was looking into homestead was since I found that mamp does not use a native mysql driver and there are some inconsistencies there. i will probably give homestead another go once i have some free time in my hands.

25th January, 2016

unitedworx left a reply on Connect To Host Machine MySQL From Inside Vagrant Box? • 2 years ago

@Abid you need to use ip 10.0.2.2 in order to connect to your host machine. This is a standard IP that get configured on homestead. if you use your machines local IP then you will need to change it each time it changes, when e.g you connect to another network!

here is my .env db detail which connects on a mysql db on my host from inside homestead vm.

DB_HOST=10.0.2.2
DB_DATABASE=laravel52
DB_USERNAME=root
DB_PASSWORD=root

unitedworx started a new conversation How Do I Setup 2 Homestead Boxes? ( One With Php 5.6 And One With Php 7) • 2 years ago

Hi everyone, i just started playing with homestead after some mysql issues with my existing development environment (mamp pro)

i am trying to figure out how to setup 2 global Homestead boxes. One with php 5.6 and one with php 7. any good tutorials on how about doing so?

I have several projects so a homestead box per site is out of the question :)

unitedworx left a reply on Laravel Collection Returns An INT As String Locally And On Live Environment As An Int ! • 2 years ago

Thanks for the reply, it seems to be a driver issue indeed. I figured out so by tinkering a lot with this and even setting up homestead to figure out the expected behaviour on this.

I even Asked Taylor Orwell about this on Twitter and his response was that this inconsistency is not an eloquent problem but a MySQL driver issue. I recommended mentioning this MySQL driver inconsistency in the framework requirements so that people are aware but not sure if this will happen.

I even contacted mamp pro team ( which I use on my dev box) and they showed some interest in switching to the MySQL native driver in future releases but I am not sure if this is in thier priority list or even at all. It seems that MySQL driver is not something that you can change with a configuration setting but something your stack is compiled with.

Under all this mess I figured it's about time to leave mamp pro behind and use homestead for my development needs. Surely will need some time to get used to but considering I am full into web development with laravel it's wise to follow he recommended development environment practices.

20th January, 2016

unitedworx started a new conversation Laravel Collection Returns An INT As String Locally And On Live Enviroment As String! • 2 years ago

i have an issue where a Laravel eloquent collection returns an INT as string on live and locally as string! trying to figure out why this difference and make sure that my live and test environments are different.

Anyone come across such issue?

local http://cl.ly/0m0S3Y1e2m1p

live http://cl.ly/1V251I0m3D2F

16th December, 2015

unitedworx left a reply on Store Product Images In Storage Or Public Folder? • 2 years ago

Thanks for the reply guys. i think i will play it safe and keep my images in the public folder as i am already doing.

I probably will change this over in an image intensive site so see if there is any performance hit of doing so but i am guessing there will be since laravel will need to bootstrap itself for every single image the website serves!

15th December, 2015

unitedworx left a reply on Store Product Images In Storage Or Public Folder? • 2 years ago

I guess I can leverage intervention/image I am already using to simply do

Route::get('media/product/{mediaId}', function($mediaId)
{
$filename = Media::findmediaId()->filename;
$image = Image::make($filename);
return $image->response();
});

unitedworx left a reply on Store Product Images In Storage Or Public Folder? • 2 years ago

Any performance hits on going so? I have many sites with 2+GB or images and wondering if following this route will cause any delays. But I guess I can only know of there is any noticeable delays if I try this while measuring performance before and after. Performance is the only thing that I am not sure and its holding me back. Will surely have more control on images access if I use the storage folder.

I am partly doing this for wide images since I use intervention image cache to create wide images e.g 930x300 via the originals shored, these are displayed on the top of article pages for example.

Could you show me your route code that grabs images from storage and sends them off?

unitedworx started a new conversation Store Product Images In Storage Or Public Folder? • 2 years ago

Is it best to store product images in public folder so I can directly link to them? Or is it better to store them in the storage folder and creating a route to fetch these either by file some or record id/slug? Any performance hits of following this route? Main reason for thinking to do it this way is to block images for products that are disabled.

8th December, 2015

unitedworx left a reply on Install The Laravel IDE Helper For Every Project? • 2 years ago

@thomthom does not make a difference what order you add them. IDE helper simply adds some code to help IDEs show propers autocompletion. does not have any effect on the actual app or any optimization done via the artisan command

20th November, 2015

unitedworx left a reply on How Do You Handle Media? • 2 years ago

@kickthemooon the images get uploaded and are simply not associated with an article, association happens once an article is saved which passes the id of the images. When editing an article you already have its id so in this case adding an image assigns it the article Id as well. I am using Ajax and Dropbox to handle my images.

19th November, 2015

unitedworx left a reply on How Do You Handle Media? • 2 years ago

My approach is using a single media table where I not only hold images but also documents and videos. So a media item can be one of these 3 and I am also using polymorphic relations so a media can belong to an article or a page or an article etc etc etc. So essentially when I create an article I can assign several media items to it. Depending on how I want my articles to be shown I do so but most of the time it's a large image on top and the rest of the images If there are any are shown on the bottom of the article as a gallery.

18th November, 2015

unitedworx left a reply on Can You Recommend A Dedicated Server Provider Close To Rackspace? • 2 years ago

Its hard to find an alternative provider if you are used to that level of managed services. I am surely capable of setting up a lot of stuff on the server on my own via ssh however i know that there is a whole lot more to it in order to keep a server secure and trouble free.

i guess my best option is to get a secondary server from another provider and see how that goes over the years while using it for a few projects that are not very critical

17th November, 2015

unitedworx left a reply on Can You Recommend A Dedicated Server Provider Close To Rackspace? • 2 years ago

Hi everyone, thanks for your input.

It makes me realize that its indeed about experience and using a provider to really see if they are good or not. And you can not really tell how good your provider is unless you run into some real shit.

I setup a website for a financial services company, forex , integrated with 4-5 different systems and 8-10 payment gateways etc etc. They setup a server at rack-space as i advised them but they soon transferred to another provider since they were like 20% cheaper. When they were under a DDOS attache they provided zero help, we had to figure things on our own. They moved to another provider and when we had some issues with the server setup they insisted its was a programming error ( which can never be wrong :) ) but after serval called and tickets a days later they fixed it after realizing it was some apache configuration causing the problem. Then they moved to another provider which one day said the hard drive died, they that the policed got it, i never found what really happened. They had zero backups or anything to help! Luckily i had recent copies on my laptop i used for development and i saved the day restoring 3 sites and 20-30 databases. They lost some data but got back operational after a day! of course here it was their fault of not setting up a fault tolerant solution but what gives.

I am with rack-space for ten years now and surely their servers are expensive but the thing with rack-space is that you are not buying the bare server specs! you are buying into the reliability and managed services rack-space offers. i get daily incremental backups for the whole server. i get monitoring, i get hardware firewall, i get technicians to solve easy weird problem you will find on top of constantly knowing that someone is looking after my server in terms of security and keeping it up to date.

My problem is that I can't afford moving to another provider to save 30% or even 50% of my server costs and loose my big clients when there is a big issue and it take several hours or days to resolve.

Yesterday i was looking at http://www.softlayer.com servers and when i selected the save server and backups and everything i get from rack-space it ended up costing more, and when i talked with their support they basically said that the servers are self managed. They said they do provide support if there are problems but I would be expected to mostly manage the server myself. They dint convince me on the level of support i would be getting!

The problem with most dedicated server providers i look into its not if they are cheap or expensive but most of the time is hard to tell what level of support they will be able to provide to help you run your business trouble free and effectively. And am not talking about hosting 2-3 sites on a server but 100+ small business websites with many of them relying on their websites and emails i provide to do business!

12th November, 2015

unitedworx started a new conversation Can You Recommend A Dedicated Server Provider Close To Rackspace? • 2 years ago

hi all

I have a dedicated server with rack-space for ten years now. anyone has experience with both rack-space and a comparable provider they can recommend? Totally happy with rackspace, 0 problems in ten years, and i am hosting 100+ small business websites on my server! But since i need to upgrade my server thought it might worth considering my options.

unitedworx left a reply on Laracasts New Layout Is Awesome. • 2 years ago

Excellent work on laracasts redesign jeffry! Its simple, clean and easy to navigate now! Smells like a breath of fresh air!

1st October, 2015

unitedworx left a reply on Extra Column Or New Table • 3 years ago

if you need more fields in the future then you simply add them on whatever table you are using :) nothing hard to do there :)

or you can add a field called extra_fields and use that along with eloquent getters and setters to store a serialized array of any extra data you need in there!

    public function setExtraFieldsAttribute($value)
    {
        $this->attributes['extra_fields'] = serialize($value);
    }

    public function getExtraFieldsAttribute($value)
    {
        return unserialize($value);
    }

29th September, 2015

unitedworx left a reply on Issues Returning Value From Relationship • 3 years ago

I didn't see the full code of both models involved but I am guessing that hasOne is the correct one since this method is on the parent model a d not the inverse relationship!

unitedworx left a reply on Issues Returning Value From Relationship • 3 years ago

:) you forgot a return!

This should work

public function type()
{
      return  $this->hasOne('App\DegreeType', 'id', 'degree_type');
}

unitedworx left a reply on Issues Returning Value From Relationship • 3 years ago

Although it should work like you are doing already try and fetch your related models using eager loading Degree::with('type')->all();

If not try posting the error you are getting to get a better idea why it fails

unitedworx left a reply on Extra Column Or New Table • 3 years ago

Keep it simple, just add your fields in the existing user table!

28th September, 2015

unitedworx left a reply on Ajax Posting Data Into The Database. • 3 years ago

Your problem is basicly not being able to debug your code since you can't directly see the errors that laravel generates! Try and call this without Ajax and make sure it works in laravel side of things and then try to convert it to work as an Ajax call.

unitedworx left a reply on Install The Laravel IDE Helper For Every Project? • 3 years ago

PhpStorm will pickup most code completion hints, you don't need IDE helper for completions however you will do need it if you want completions for the build in facades or the ones you will build or completion for your model attributes etc.

I would include in in every project if I were you and as mentioned by corez64 I would add it to the the composer commands that run after update so this gets updated/regenerated every time you update the rest of your packages. I would also include

27th September, 2015

unitedworx left a reply on Dropzone Js + File Upload File Order • 3 years ago

What I do is have a sort field in my images table which gets increments every time I save an image in my database

Then using drag and drop I can order my images, which is another subject on its own.

I actually created a service provider which makes sure to increment the sort field each time a new model is saved if I specified if it has an attribute autoIncrementSort set to true! Which makes this work across all my models I want to be able to sort!

<?php namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use \Event;
use \DB;
class SortIncrementServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->registerEvents();

    }


    public function registerEvents()
    {
        Event::listen('eloquent.creating*', function ($model) {
            if ($model->autoIncrementSort) {
                $model->sort = DB::table($model->getTable())->max('sort') + 1 ;
            }
        });
    }

}


21st September, 2015

unitedworx left a reply on Any Better Way To Transform This Html Input Array? • 3 years ago

@Snapey if you dont provide the index then each of the attributes in an offer will have a different index! so this definitely does not work!

@ohffs i tried that approach but its less helpful from what i am trying to do. With the array structure i want to achieve i can easily do the following in php :) which is much much much cleaner! You can't do this with a different array structure!

        foreach ( $offfer_to_add as $index => $data) {
                Offer::create($data);
        }

The best way i came up so far is to following this approach in html and increment the index via jQuery when i clone the element

<div class="offer">
    <input type="text" name="offers_to_add[1][title]"  >
    <input type="text" name="offers_to_add[1][text]"  >
    <input type="text" name="offers_to_add[1][amount]"  >
</div>
<!-- add more btn - duplicates the above offer div -->
<button type="button" class="btn btn-default center-block"
        data-action="clone-element" data-element=". offer" >
    Add more offers <i class="fa fa-plus"></i>
</button>
    $(document).on('click', '[data-action="clone-element"]', function() {
        var element = $(this).data('element');
        var html = $(element).last().clone();
        //increment input array index ( e.g [1] to [2] ) to have clean arrays in php to work with
        html.find('[name]').each(function(){
            this.name = this.name.replace(/\[(\d+)\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']'});
            this.id = this.id.replace(/\[(\d+)\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']'});
        });
        $(element).last().after(html);
    });

if you guys found a better solution i am all ears! at the moment incrementing the index via jQuery seems the cleanest way!

unitedworx started a new conversation Any Better Way To Transform This Html Input Array? • 3 years ago

i have the below html code which get duplicated when users click add so they can add many offers to an item. (it has a lot more fields but keeping simple here) the returned array i get back is not easy to work with and i prefer it to be structured a bit differently as shown below.

i know i can do something like offers_to_add[0][title] to achieve this but this will be very ugly since i will need to update the array index each time i duplicate it via javascript which i dont think is a good idea.

What i have done is written some code to transit my array in php exactly like i want it but i am not sure if there is a simpler/cleaner way! anyone else came across this hurdle? any cleaner way to do this?

<div class="offer">
    <input type="text" name="offers_to_add[title][]" id="offers_to_add[tittle][]"  >
    <input type="text" name="offers_to_add[text][]" id="offers_to_add[text][]"  >
    <input type="text" name="offers_to_add[amount][]" id="offers_to_add[amount][]"  >
</div>
<!-- add more btn - duplicates the above offer div  -->

returned offers_to_add array has this form

array:3 [
  "title" => array:2 [
    0 => "this is a test 1"
    1 => "this is another test 2"
  ]
  "text" => array:2 [
    0 => "title 1"
    1 => "title 2"
  ]
  "amount" => array:2 [
    0 => ""
    1 => ""
  ]
]

i need it to be

array:2 [
  0 => array:3 [
    "title" => "title 1"
    "text" => "this is a test 1"
    "amount" => ""
  ]
  0 => array:3 [
    "title" => "title 1"
    "text" => "this is a test 1"
    "amount" => ""
  ]
]

this block of code does the job to transform the array. but yet still feels a bit hacky! any cleaner better way of getting the array the way i need it?

       $transformed_data = array();
       $keys = array_keys($offers_to_add);
       foreach ( head($offers_to_add) as $index => $value) {
           foreach ( $keys as $i => $key_name) {
            $transformed_data[$index][$key_name] = array_get($offers_to_add,$key_name.'.'.$index); 
           }
        }
Edit Your Profile
Update

Want to change your profile photo? We pull from gravatar.com.