<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Joynal Rab]]></title><description><![CDATA[A developer & designer from Jersey on a never-ending mission to stay relevant.]]></description><link>https://joynal.com/blog/</link><generator>Ghost 0.11</generator><lastBuildDate>Fri, 17 Sep 2021 18:16:09 GMT</lastBuildDate><atom:link href="https://joynal.com/blog/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[New Round of Updates]]></title><description><![CDATA[<p><img src="https://joynal.com/blog/content/images/2016/05/bigstock-Businessman-using-weights-at-h-35481452-1.jpg" alt=""></p>

<p>It's been a whole while since my last update -- kinda made an implicit promise I'd stay a little more on track than the previous years. We can only hope for the best right? :)</p>

<p>So what's happened since the last post. I work best with lists so let's try that!</p>]]></description><link>https://joynal.com/blog/new-round-of-updates/</link><guid isPermaLink="false">adaf72cc-a8c9-4e7a-9eed-2d67672524cc</guid><category><![CDATA[P90X]]></category><category><![CDATA[P90X3]]></category><category><![CDATA[Javascript]]></category><category><![CDATA[Workout]]></category><category><![CDATA[Mobile]]></category><category><![CDATA[Work]]></category><category><![CDATA[success]]></category><category><![CDATA[failure]]></category><category><![CDATA[gym]]></category><category><![CDATA[tony horton]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Tue, 24 May 2016 05:09:00 GMT</pubDate><media:content url="https://joynal.com/blog/content/images/2016/05/bigstock-Businessman-using-weights-at-h-35481452-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://joynal.com/blog/content/images/2016/05/bigstock-Businessman-using-weights-at-h-35481452-1.jpg" alt="New Round of Updates"><p><img src="https://joynal.com/blog/content/images/2016/05/bigstock-Businessman-using-weights-at-h-35481452-1.jpg" alt="New Round of Updates"></p>

<p>It's been a whole while since my last update -- kinda made an implicit promise I'd stay a little more on track than the previous years. We can only hope for the best right? :)</p>

<p>So what's happened since the last post. I work best with lists so let's try that!</p>

<h3 id="work">Work</h3>

<p>Did my usual share of work and bug fixes a.k.a <em>enhancements</em>. But my biggest accomplishment thus far was this project we called Mobile 4.0. Essentially I was tasked to take our most hit page (product detail page) and reduce the initial load time for our consumers on the site. By the end of it, I ended up surprising myself. After months of work and optimization upon optimizations I managed to reduce the load time (initial readable content on the screen) from a whopping 11 seconds all the way down to less than 2 seconds (on an average 3G connection)! To picture it, we went from a snail crawl to a mustang. Aside from the speed of the page being much improved we saw a bump in conversion. There is still MUCH work left to do and numbers to crunch but we are excited with the results and will continue to apply the same changes throughout the rest of the site. <em>There is a lot more detail here and fun stuff but that'll take up an entirely separate post.</em></p>

<p>Another cool thing we are trying to do is hold a Javascript Workshop (ran but yours truly) to bring people throughout our department up to speed with the latest and greatest Javascript has to offer. We are still in the planning phases and are going to do a pilot run -- but things are looking pretty good!</p>

<h3 id="personal">Personal</h3>

<p>Starting at the beginning of this year, I made a goal for myself to start working out. Shockingly like most other years I wasn't able to keep up with my promise. I tried the whole going to the gym thing for a couple of weeks but eventually I ended up taking a break and just dropping the habit. I managed to come up with an arsenal of excuses that all seemed valid at the time. But honestly no matter how busy you are, you can always make time for something if you try hard enough. I didn't try hard enough. But I will say when I started working out again I started feeling better and it transferred over to other parts of my life.</p>

<p>In the last month or so, something fantastic happened. It wasn't so fantastic in the beginning but ended up working out better than I had expected. A friend of mine was getting married and I was tasked to go to her wedding. Now one thing people close to me know, I haven't attended many weddings. Either the timing was bad or they were too far away. Whatever the reason, at that time I've only attended one wedding my entire life.</p>

<p>So as with anything in my life, I screwed the pooch with the RSVP formalities. I forgot to RSVP but my friend knew me well enough to assume I was attending and called me up to do an impromptu confirmation. Anyways, the next thing I needed to do was to get a suit ready for the wedding. Great idea right? Except I waited till the <strong>week of</strong> to get the suit. Well two things: 1. I didn't own any suits that fit (I've grown in size [the worst kind of growth]) 2. I had to rent a suit because I have this genuine fear if I buy a suit now to own, I will be committed to the size and weight I am.</p>

<p>I ended up going to Men's Wharehouse and picked out a suit. One thing I learned while being there is that you <strong>do not</strong> wear a tux to a wedding -- make sure it's a <strong>suit</strong>. They should really write a book about how to attend a wedding -- but I digress.</p>

<p>So the wedding day came by (oh yeah I herniated a disc in my neck resulting in bulge prior [I should really write about that too -- next post]) and I suited up -- and I gotta say I kinda liked it. Like I liked it <strong>alot</strong>. To the point where it set off some signals in my brain. <em>I wanted to own an awesome suit and actually fit in it</em>. We'll get back to that. The wedding went beyond great and I got to meet so many people I haven't seen in literally YEARS. It was exciting and I'd totally do it again minus the initial anxiety of getting ready for the wedding. Oh yeah and I helped a friend pick up the bride on our shoulders during one of the dances with the groom (the herniated disc thing didn't help -- but I was hopped up on adrenaline and it was <strong>TOTALLY</strong> worth it to see the bride so excited).</p>

<p>So back to my epiphany of sorts. I wanted to own a suit and fit into it. But that meant I had to workout again. As I said before I started to fail at it like I've failed it countless times before.</p>

<p>But I have had successes before doing it. It wasn't <em>all</em> failures. </p>

<ul>
<li><p>My first success was my stomach failing me during high school. Like I literally rose to my highest weight and ended up busting the lining of my stomach due to my <em>very</em> poor diet. So I was on the very very special diet that involved me eating a specific type of bread for a year. NOTHING ELSE. I dropped 40 lbs that year. It sucked for an entire year and I suffered. All because I ate super unhealthy and I drank LOTS and LOTS of soda my entire life before this. Your stomach is not made for that kind of abuse.</p></li>
<li><p>I eventually started back on my road to a higher weight after my stomach issues were resolved but I fluctuated up and down. In college I came across a new/old program called P90X. It changed my life. I hear a lot of commercials about saying the same thing but it literally did change my life. From having partners doing it with me and creating almost a cult of it amongst my friends, Tony Horton had a profound impact on my life. I followed the program for two straight months and I became stronger and more fit than I've ever been. <em>I could make an entire entry out of this too</em>. But I do have this thing -- it's like a two month curse. The entire premise of the program is that you are supposed to it for <strong>three</strong> straight months but every time I've started the program I go two months and I see results and stop. Either I get sidetracked and forget about the program. Since the first time I've done this program, every time I attempt I get results in two months, which is fantastic. (But you should absolutely do the required three months. Don't be an idiot like me.)</p></li>
<li><p>During college I'd also gym with my buddies and I maintained a pretty healthy lifestyle. Working out with people definitely motivates you and makes you keep going. It's great to have a common and healthy interest. What isn't great is the ugly side of working out with friends. You get competitive. So one day I decided to do a deadlift and match a few friends. Threw my back out hard. I didn't go back to the gym as often after that. Don't get too competitive and definitely don't throw out your back.</p></li>
<li><p>This one month I did this green juice fast. Like my daily eating schedule included the following: Breakfast a piece of costco breaded chicken. Evening for dinner an entire glass of green juice (carrots, celery, kale and spinach). If I got hungry before bed I'd have green beans. That was literally it. By the end of the month I dropped a whopping 30 pounds. I definitely do NOT recommend this. It was dangerous and I was an idiot. I got results but it was super unhealthy. A human body is NOT meant to drop that much weight in a month. By the end of it I was pooping green. I kid you not. I also had really bad acid reflux. Don't do it.</p></li>
</ul>

<p>So out of the four or so major attempts at weight loss -- P90X stood out. Something about working out in the comfort of your own home and listening to Tony Horton talk just gets you motivated. It's almost like you're working out with friends -- but obviously a little more imaginary -- but you can trick your brain into thinking anything you want if you try hard enough.</p>

<p>So with the help of Tony starting last week, I'm trying to get back on track with P90X. It was a rough week getting back into the game. Started off great but towards the end of the week I started to lose focus. The original P90X includes on average hour long sessions -- Yoga would span to an hour and a HALF. They were long but affective.</p>

<p>Unfortunately, no matter how theoretically affective something is -- if you don't do it, it won't help. So this week, I turned to P90X3. This program (relatively new) is similar to the original program, but it's much shorter. By half basically. They are a half hour long sessions -- there is some science behind it. There are pros and cons behind each of the programs, but the deciding factor will always be what the person can stick to. That's really the key. Finding something and doing it consistently.</p>

<p>Pretending last week was my warm up / practice week with the original P90X, this week will count as my first week with P90X3. So today was my first day. I want to try and wake up early enough to do it, but it's tough. So today I ended up doing to at night -- which wasn't so bad. But doing it at night brings its own share of issues like having last minute work or events to get to. Mornings are the best but waking up is tough. I will try though.</p>

<p>Oh and as far as the original P90X vs P90X3 -- according to Tony they are the same, but obviously the longer you do something the better the result. So if you got the time, stick to the original. But if you're a normal human being with no time, try the P90X3.</p>

<p>So this was a SUPER SUPER long post. And I think because my posts are so long I end up demotivating myself from writing another one. But I'll try to write smaller posts (pretty sure I made the same assumption in my last few entries). Thanks for sticking by and check back for more updates on my successes and failures. Can't have one without the other!</p>

<p><em>(Sorry for the typos -- wrote this when I was supposed to be sleeping)</em></p>]]></content:encoded></item><item><title><![CDATA[Clean Slate]]></title><description><![CDATA[<p>Life really needs a reset button doesn’t it? We’ve made mistakes — tons of them. From saying the wrong things to doing the wrong things — some result in embarrassing moments and other times life changing moments. It could go either way. In most cases we can kind of brush</p>]]></description><link>https://joynal.com/blog/clean-slate/</link><guid isPermaLink="false">303d73ba-a5b8-4a18-ae96-023724747ce7</guid><category><![CDATA[newyear]]></category><category><![CDATA[cleanslate]]></category><category><![CDATA[icecream]]></category><category><![CDATA[mistakes]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Mon, 18 Jan 2016 05:32:07 GMT</pubDate><content:encoded><![CDATA[<p>Life really needs a reset button doesn’t it? We’ve made mistakes — tons of them. From saying the wrong things to doing the wrong things — some result in embarrassing moments and other times life changing moments. It could go either way. In most cases we can kind of brush off the repercussions; however, there are some cases when a mistake is so terrible we can’t just walk away from it. We could end up losing a relationship, job or even our lives (<em>cue the dramatic music</em>).</p>

<p>Wouldn’t it be great if we could Edit > Undo everything? Like we fail a test — Edit > Undo. We eat an entire thing of cake — Edit > Undo. We stop going to the gym for a year — Edit > Undo. We drop a monitor out of a 15 floor window — Edit > Undo. You get the picture. We could almost start things off with on a <strong>clean slate</strong>. No evidence of our stupidity and no awkward moments. It would be glorious.</p>

<p>Unfortunately life doesn’t give us that luxury (<em>at least not yet — yay for time travel</em>). We have to face the consequences of our actions and kind of have to hope for the best. At best we can learn from our mistakes and make sure it doesn’t happen again. One of life’s great gifts: [expensive] life lessons.</p>

<p>If you haven’t already guessed it this is my “New Year’s” post — most people need a specific time to get there shit together and they usually pick the end of a year and the beginning of a new one to do it. I’d be lying if I said I didn’t fall into that cliche. Every year I think this is the year that it all changes and I’m gonna be fit as a fiddle and save every dime and buy a million dollar house. But reality slowly sets in and other <em>more important things</em> come up and before you know it you’re at the end of the year making the same resolutions.</p>

<p>So although I do fall into the cliche, I’m not an idiot. I don’t expect this year to actually be the year everything suddenly makes sense. All I can hope for is the best and hope everything kinda-sorta falls into place.</p>

<p>I’ve been dreading this post. Because after I post it I’m almost obligated to start making things better for myself (<em>it’s been a rough start</em>). You probably already know this about me but I’d rather eat an entire tub of ice cream than to confront my problems. Unfortunately I’ve run out of ice cream.</p>

<p>So good luck to everyone (including myself) — here’s to a New Year and a clean slate!</p>

<p>PS. Every year me and a buddy of mine make a statement for the new year — almost like a resolution but more of a guideline/words to live by for the next year. This year it’s to make bold moves and decisions. Forget being safe and becoming stale in the same spot you’ve always been. Just go out and do things you wouldn’t dream of ever doing. <em>Because sometimes we have to push ourselves off a cliff before we can really fly</em>.</p>]]></content:encoded></item><item><title><![CDATA[BlackBerry]]></title><description><![CDATA[<p><img src="https://joynal.com/blog/content/images/2014/Apr/Blackberry-Logo.jpg" alt="BlackBerry"></p>

<p>Now a days when you hear the word <strong>BlackBerry</strong> a negative image comes to mind. From negative blogs to negative stock market news -- but one thing that is common amongst all those sources: they are inaccurate. If you just read the titles and skim through each article the impression</p>]]></description><link>https://joynal.com/blog/blackberry/</link><guid isPermaLink="false">d97b03b9-1275-4fba-a626-4e65d201a422</guid><category><![CDATA[BlackBerry]]></category><category><![CDATA[Bullies]]></category><category><![CDATA[T-Mobile]]></category><category><![CDATA[Believe]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Sat, 05 Apr 2014 00:31:11 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://joynal.com/blog/content/images/2014/Apr/Blackberry-Logo.jpg" alt="BlackBerry"></p>

<p>Now a days when you hear the word <strong>BlackBerry</strong> a negative image comes to mind. From negative blogs to negative stock market news -- but one thing that is common amongst all those sources: they are inaccurate. If you just read the titles and skim through each article the impression you get is <em>how are they still around</em>. But if you dig further into the articles and actual do some fact checking you realize those articles are just sensualism. People are more willing to read the bad article than the handful of good ones. Society has been built in a way where we like to see companies fall and burn instead of them prospering. It's just human nature.</p>

<p>But the truth is BlackBerry is here to stay and they are still profitable. Companies that are not profitable wither away and do not stick around year to year just because they can. BlackBerry has beaten the odds time and time again and are still selling devices and software. It's what they do best. They thrive under pressure and time and time again again they survive. </p>

<p>Not too long ago Apple was in the same boat. They were suffering from bad sales and were not able to innovate and as a result losing market share. The only difference is back in the 90's there were no blogs and no social media to call them out on it. Apple was a brand that did not matter and was not worth a second of someone's time to review and bash. BlackBerry on the other hand is having some problems during this day in age where people are able to hop on a computer and post a bad review or comment. In regards to Apple, they were able to bounce back with the help of Steve Jobs after some time. I hold the same belief for BlackBerry. They will bounce back and all the sheep out there that think otherwise will eat their words. But they won't show it. They will just ignore the fact that BlackBerry is back and move onto bashing some other company or brand to drive more users to their site.</p>

<p>Recently it has become the <em>cool</em> thing to bash on BlackBerry and it had caught on to bigger companies like <strong>T-Mobile</strong>. I respected T-Mobile for a long time for their <strong>Uncarrier</strong> campaign -- but as soon as they jumped on the bandwagon and started turning their backs on BlackBerry just to earn some brownie points with the public I've lost all respect. It's a shame that that is what it takes for companies to survive now. It's another example of the philosophy of a bully. Bullies pick on the smaller guys to make themselves more popular. T-Mobile decided that to become popular they too have to bully struggling companies. <strong>T-Mobile's attack on BlackBerry was nothing more than a blatant attempt at bullying.</strong> If your service need more users, don't resort to bullying. It's a damn shame.</p>

<p>I'm a <strong>proud</strong> BlackBerry user and will always be a BlackBerry user. Their innovation has been slow but they have stayed true to their colors. I know what to expect of them. I respect their attempts of coming back and I have 110% faith in the brand. John Chen is the new face of BlackBerry and he looks bold enough to get them out of the dark age. </p>

<p>I've been with BlackBerry since their Curve 8320. Every time they came out with a device it was a solid venture. I am currently using BlackBerry 10 device and love every minute of it. Sure it had and still has its share shortcomings but they are working aggressively to fix all of their problems. They aren't just giving up and going home. They are fighting bad press everyday and sticking to their guns. That is a company I can believe in and trust.</p>

<h3 id="iamblackberry">I am BlackBerry.</h3>]]></content:encoded></item><item><title><![CDATA[Migration]]></title><description><![CDATA[<p>So I had a pretty busy past few days. I moved over everything from <code>rab.io</code> to <code>joynal.com</code> -- minus the short url stuff. The way I looked at it, having <code>joynal.com</code> as my base domain made more sense than to have the <code>rab.io</code> as my main</p>]]></description><link>https://joynal.com/blog/migration/</link><guid isPermaLink="false">13a37c35-131b-431c-a20c-65aef8bd2e51</guid><category><![CDATA[Development]]></category><category><![CDATA[nginx]]></category><category><![CDATA[postfix]]></category><category><![CDATA[dovecot]]></category><category><![CDATA[digital ocean]]></category><category><![CDATA[droplet]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Fri, 28 Mar 2014 18:37:59 GMT</pubDate><content:encoded><![CDATA[<p>So I had a pretty busy past few days. I moved over everything from <code>rab.io</code> to <code>joynal.com</code> -- minus the short url stuff. The way I looked at it, having <code>joynal.com</code> as my base domain made more sense than to have the <code>rab.io</code> as my main domain -- also that gives me more options when it comes to building additional web-apps functionality. Maybe I'm just weird.</p>

<p>Anyways, during this whole migration, I also migrated servers. Initially I had just set up a laptop at home as a temporary server. It was running on Debian Squeeze on an old Dell Inspiron 600m. It was going well and didn't run into any big problems. The only issue I had with it was reliability with my internet connection. I have Verizon Fios at home, which is super fast btw, but Verizon has a tendency of going down time to time. The down times are unexpected and because the net shuts itself down, it resets my IP address at home. Then it screws with my DNS I have set up and I have to do some maintenance to get it back up and running.</p>

<p>It's a minor annoyance but if it happens enough times, it becomes a big annoyance. I've been toying around with the idea of using a host called <a href="http://www.digitalocean.com/" target="_new">Digital Ocean</a>. Initially what got my attention was their feature of giving you basically a VPS environment. You would be building your server from scratch (software-wise). They do these things in <em>droplets</em> which is like an instance of a server. They even give you a dedicated IP and DNS set up -- which is fantastic.</p>

<p>I gave it a try and was beyond wow'ed by the service. It did exactly what they said and it was super cheap. It was so easy it took me only a couple of days to bring everything from my at-home Debian server and put it all on this new Ubuntu instance. Most of everything was scripted well and I was able to bring it over without a hassle. I just had issues with internal web server configuration. Here is a checklist of the things I needed to do initially.</p>

<ol>
<li>Create a new Ubuntu Droplet  </li>
<li>Secure the server with new users and credentials  </li>
<li>Install Nginx (Better version of Apache IMO)  </li>
<li>Install MySQL (so 90's right?)  </li>
<li>Install PHP5-FPM (a version of PHP)  </li>
<li>Install NodeJS  </li>
<li>Install Ghost Blog  </li>
<li>Configure Nginx to play nice with Ghost Blog  </li>
<li>Copy over old database for GhostDB  </li>
<li>Migrate URL Shortener data (custom bit.ly-alternative)  </li>
<li>Migrate URL Shortener logic  </li>
<li>Migrate cloud settings (custom CloudApp-like file hosting feature)</li>
</ol>

<p>After doing all that, something seemed like it was missing. Oh yeah -- email. Until now I've always used third party services when it came to emails -- either something like Gmail or whatever service I bought my domain from. Now the problem I had this time around was that I was handling the DNS via <strong>Digital Ocean</strong> and they did not provided an email service out of the box -- I had to make my own via the droplet. </p>

<p>After scouring the internet I found the following tools:</p>

<ul>
<li>Postfix</li>
<li>Dovecot</li>
</ul>

<p>Using the combination of the two I managed to set up my own email server and was able to send and receive secure emails. This was beyond fantastic -- I've never done it before and it actually worked out in the end. I even have email forwarding setup! (Nerdgasm)</p>

<p>After doing all that I basically have the same set-up as before but with more reliability and less hassle -- and it's only costing me at most $5/month.</p>

<p>There's so much more to explore and so much more features I can custom build and use -- I'm super excited.</p>

<p>The great thing about developing software is the instant gratification. With most other things you have to <em>wait</em> for results -- when it comes to web development you get back results almost instantly, which is fantastic.</p>]]></content:encoded></item><item><title><![CDATA[Tinkering]]></title><description><![CDATA[<p>A few days ago I posted an entry about exposure, URL shorteners and how to start making your own. At the end of the post I wrote a way that I might build on top of what I had already created. I would somehow add the ability to upload a</p>]]></description><link>https://joynal.com/blog/tinkering/</link><guid isPermaLink="false">67561a6c-51a4-4615-9232-39634eb1dfb8</guid><category><![CDATA[Short URLs]]></category><category><![CDATA[Automator]]></category><category><![CDATA[Mac]]></category><category><![CDATA[Apple]]></category><category><![CDATA[Shell Script]]></category><category><![CDATA[Work Flow]]></category><category><![CDATA[Custom Share]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Tue, 25 Mar 2014 20:27:39 GMT</pubDate><content:encoded><![CDATA[<p>A few days ago I posted an entry about exposure, URL shorteners and how to start making your own. At the end of the post I wrote a way that I might build on top of what I had already created. I would somehow add the ability to upload a file to my server from my computer and automatically generate a short link to that file -- kinda like CloudApp. Today I did just that.</p>

<p>It took a few days with all that's been going on in my life -- but I managed to make a very <em>crude</em> working example that well -- works. I had a lot of help from Apple's Automator. This is a fantastic tool that is available on all Macs as far as I know. Through automator you can basically script certain actions in the OS so you don't have to do it manually every time. It takes some work, but it's a super powerful tool.</p>

<p>In my case, I wanted to upload a file from my computer and share it instantly via a custom shortened url. I completed this application in tiny, manageable pieces.</p>

<ol>
<li><p>Initially, I created an automator script that SCPs a file to my server once I drag it to a specific folder. Already the limitations had occurred to me. First, it's one folder. So that means every time I want to upload a file, I have to go to the folder and drag and drop my file. Also, what do I do when the file is there? It is physically removed from it's old location. Sure, I could copy it over and delete, but that requires extra steps.</p>

<p><strong>Folder Action</strong>
<img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_25_at_4_22_34_PM.png" alt="Folder Action" title=""></p>

<p><strong>Service</strong>
<img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_25_at_4_22_07_PM.png" alt="Service" title=""></p></li>
<li><p>Then I got another idea of adding a <strong>Service</strong> to the OS instead. This means, instead of a folder action, this would be an actual service you run on the MacOS. What does that mean? Instead of having to drag and drop a file, I could just right-click on the file and hit "Send to RabIO" and the process would start from there.</p>

<p><img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_25_at_4_00_07_PM.png" alt="Right-Click Popup" title=""></p></li>
<li><p>Through automator I set up the blueprint of what I wanted to happen. In the blueprint, I utilize a shell script that calls my external server and does the following: generate a file key; generate a custom short URL; upload file and produce confirmation.</p>

<p><img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_25_at_4_18_37_PM.png" alt="Automator" title=""></p></li>
<li><p>I'm able to right-click > Send to RabIO and wait for a popup message to confirm that the file has been uploaded and a short link has been copied into my clipboard.</p>

<p><strong>Short URL</strong>
<img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_25_at_4_20_36_PM.png" alt="URL-Short" title=""></p>

<p><strong>Long URL</strong>
<img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_25_at_4_21_08_PM.png" alt="URL-Long" title=""></p></li>
</ol>

<h3 id="nextsteps">Next steps</h3>

<p>Right now the script runs and works as expected. Although I applied some initial security precautions to the application, I plan on locking it down further. I haven't written up a spec yet for the application, so I'll make it a little more organized down the road. The concept works and the nerd inside of me is pretty satisfied. Now onto the next thing!</p>]]></content:encoded></item><item><title><![CDATA[Exposure]]></title><description><![CDATA[<p>Being a company or even just an individual, we all want some sort of exposure and be noticed publicly. The best way to expose yourself to the world is to have your brand noticed. In my case my brand is this domain: <a href="https://rab.io">rab.io</a>. Even though currently it just hosts</p>]]></description><link>https://joynal.com/blog/exposure/</link><guid isPermaLink="false">342012e8-8f46-4a3e-9f2e-f5f06ff30e73</guid><category><![CDATA[Development]]></category><category><![CDATA[PHP]]></category><category><![CDATA[Short URLs]]></category><category><![CDATA[Vanity]]></category><category><![CDATA[Javascript]]></category><category><![CDATA[MySQL]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Sat, 22 Mar 2014 04:07:27 GMT</pubDate><content:encoded><![CDATA[<p>Being a company or even just an individual, we all want some sort of exposure and be noticed publicly. The best way to expose yourself to the world is to have your brand noticed. In my case my brand is this domain: <a href="https://rab.io">rab.io</a>. Even though currently it just hosts my blog, there will be a lot of there stuff added along the way. (I'm actually still debating whether or not to use my other domain <a href="http://joynal.com">joynal.com</a> instead to host my blog and use rab.io just for development.)</p>

<p>You can market yourself through different channels and drive in traffic or you can get a little creative. My first attempt at exposure if by having custom url shorteners. Yeah I know there are like a million of them, but me being who I am, I don't like using someone else's service -- I like having my <em>own</em>. Call it vanity or whatever, I like earning what I have even if it takes a lot of blood and sweat to achieve it.</p>

<p>There are ton of url shorteners like <a href="http://bit.ly" target="_blank">bit.ly</a> out there -- bit.ly actually paved the way for services like this. Now in my case I wanted something like <code>rab.io/j40dD</code> or even a step further <code>rab.io/facebook</code> to go to something like Facebook (just an example).</p>

<p>I went ahead and looked around to see what other people were doing and sure enough people were super creative. There are even new services like <strong>CloudApp</strong> that go a step further and host files with URL shorteners. This is pretty fantastic stuff. Imagine you needed to link someone to something -- wouldn't you rather link them to something like <code>yourdoma.in/UEDO</code> instead of <code>bit.ly/UEDO</code> or even a direct link like <code>http://mrcoles.com/bookmarklet/</code> (great site btw, we'll get back to that later)?</p>

<p>That way when the world sees your link, they see your domain instead of something like bit.ly (no offense bit.ly). So I went on a research trip to make it possible. I decided to do everything via PHP since it's basically my second language next to Coldfusion nowadays -- if I could do it through javascript I would heh. But alas PHP was best fit for it.</p>

<p>My first road block was that I actually use this domain for more than redirects -- I host my blog and stuff. So I had to either go for a subdomain or just a sub-directory off of <code>rab.io</code>. So I did just that.</p>

<p>An example of a working redirect:</p>

<pre><code>rab.io/s/bkmrk
</code></pre>

<p>So anytime someone goes to <code>rab.io/s/[insert string]</code> it will go to a page (if it exists). </p>

<h3 id="sohowdidimakethiswork">So How Did I Make This Work?</h3>

<p>I did a few things (probably out of order). First, I could have gone the route of setting up a form and submitting it with a new link and have it generate a short link for me. That's great, but I wanted to go a step further and just click on a button while on some random website and have it generate me a short link. Enter <strong><em>bookmarklets</em></strong>.</p>

<p>Bookmarklets are exactly what they sound like. Basically they are button(s) that exist in your Bookmark toolbar and if you click on them, they just don't take you to a page, they can perform javascript executions on the current page you are on -- in my case I wanted to take the current page's link and send it over to <code>rab.io</code> and generate a short link all in one shot. Confused yet? I'll explain.</p>

<p>Say if I was on this site: <code>http://mrcoles.com/bookmarklet/</code></p>

<p><img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_21_at_11_55_30_PM.png" alt="mrcoles.com"></p>

<p>And I wanted to quickly generate a link like <code>rab.io/s/bkmrk</code>, I would just click on the <code>Rab.io Shortener</code> button in the bookmark toolbar, and it would bring me to my site and show me the short link like so:</p>

<p><img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_22_at_12_00_47_AM.png" alt="rab.io shortener"></p>

<p>There I have the option to either keep the link the way it is, or further customize it to something like <code>rab.io/s/bkmrk</code>.</p>

<p>So how did I make this happen. First go to this website: <a href="http://mrcoles.com/bookmarklet/" target="_blank">Bookmarklet Creator with Script Includer</a>. After doing so, you'll find a bookmarklet generator that you can make some javascript magic with. In my case, this is the script I generated:</p>

<pre><code class="language-prettyprint lang-js">var _form = document.createElement("form");  
_form. setAttribute("target", "_blank");  
_form. setAttribute("action", "https://rab.io/path/to/shortener");  
_form. setAttribute("method", "POST");  
var _input = document.createElement("input");  
_input.setAttribute("name", "url_variable");  
_input.setAttribute("type", "hidden");  
_input.setAttribute("value", location.href);  
_form.appendChild(_input);  
_form.submit();  
</code></pre>

<p>MrColes.com then kindly generates this for me:</p>

<pre><code class="language-prettyprint lang-js">javascript:(function()%7Bvar%20_form%20%3D%20document.createElement(%22form%22)%3B_form.%20setAttribute(%22target%22%2C%20%22_blank%22)%3B_form.%20setAttribute(%22action%22%2C%20%22https%3A%2F%2Frab.io%2Fpath%2Fto%2Fshortener%22)%3B_form.%20setAttribute(%22method%22%2C%20%22POST%22)%3Bvar%20_input%20%3D%20document.createElement(%22input%22)%3B_input.setAttribute(%22name%22%2C%20%22url_variable%22)%3B_input.setAttribute(%22type%22%2C%20%22hidden%22)%3B_input.setAttribute(%22value%22%2C%20location.href)%3B_form.appendChild(_input)%3B_form.submit()%7D)()  
</code></pre>

<p>You select all that and <em>drag</em> it to your bookmark toolbar.</p>

<p>So a few things are going on here.</p>

<ol>
<li><p>I was initially going to just do a GET call and use a query string, but it got messy with some URLS having encoded/decoded variables. So I decided to go with a POST method call because those input variables are easier to manage.</p></li>
<li><p>I'm creating a pseudo <code>FORM</code> on the current page and then creating the required form variable <code>url_variable</code> that will store the <code>location.href</code> (location of the current page I'm on)</p></li>
<li><p>Finally I submit the pseudo form to a new page/tab that will bring me to the URL shortener PHP page I have set up to create the new (or old variable if it was previously generated) and display it on the screen.</p></li>
</ol>

<p>Now, there is a library called <a href="http://yourls.org/" target="_blank">YOURLS</a> that does URL shortening using PHP, but I went with creating one from scratch (yes I'm stubborn).</p>

<p><strong>This is what the PHP page looks like:</strong></p>

<pre><code class="language-prettyprint lang-php">&lt;?php 

    if (!isset($_POST['url_variable']) || $_POST['url_variable'] == "") {

        header("location: https://rab.io/");

    } else {

        $url_variable = (strpos($_POST['url_variable'], "http") === false) ? 'http://' . $_POST['url_variable'] : $_POST['url_variable'];
    }

?&gt;

&lt;?php

    $dbh = new PDO("mysql:host=DB_HOST;dbname=DB_NAME", "DB_USER", "DB_PASS");

    $stmt = $dbh-&gt;prepare("CALL P_INSERT_URL(:URL_LOCATION_IN, @URL_ID_OUT, @URL_NAME_OUT)");

    // bind the variables to the statement
    $stmt-&gt;bindParam(':URL_LOCATION_IN', $url_variable, PDO::PARAM_STR);

    // call the stored procedure
    $stmt-&gt;execute();

    $output_base_url = '/s/' . $dbh-&gt;query('SELECT @URL_NAME_OUT')-&gt;fetchColumn();
    $output_url = 'rab.io' . $output_base_url;

    $url_id = $dbh-&gt;query('SELECT @URL_ID_OUT')-&gt;fetchColumn();
?&gt;
</code></pre>

<p>Basically I look for the url_variable and then send it into the stored procedure in my database. In the stored procedure, I just insert a new record if no current record exists. If an old record exists, I simply bring back that old record.</p>

<h3 id="finalthoughts">Final Thoughts</h3>

<p>So at this point, I (even you) can convert any website into a short link of your liking and personalize it. It was a pretty great experience to having create one within a day's worth of time. </p>

<h3 id="nextsteps">Next Steps</h3>

<p>I want to take this even further and be able to upload files and create short links to them via this website kind of like how <strong><em>CloudApp</em></strong> does it. Their service is great, but you have to pay for the good stuff -- so I'd rather just build one on my own :].</p>

<p>If you need any help with this, shoot me an email or even comment below. Thanks for reading!</p>

<p><em>DISCLAIMER: My code used is very primitive and probably needs a lot of work to meet best practices guidelines. But this was just a quick and dirty way of going about it. I'll make improvements as time goes on.</em></p>]]></content:encoded></item><item><title><![CDATA[My Current Project]]></title><description><![CDATA[<p>Right now, I'm working on a music player type application for a client. I've been messing around with the idea of how to go about doing the project. Sure I can make a quick application to get the job done -- but I want to take this opportunity to do</p>]]></description><link>https://joynal.com/blog/my-current-project/</link><guid isPermaLink="false">69cd56a8-04b1-4d3d-a257-47b991191cfb</guid><category><![CDATA[Development]]></category><category><![CDATA[Project]]></category><category><![CDATA[PHP]]></category><category><![CDATA[Laravel]]></category><category><![CDATA[REST]]></category><category><![CDATA[Backbone.js]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Thu, 20 Mar 2014 21:01:13 GMT</pubDate><content:encoded><![CDATA[<p>Right now, I'm working on a music player type application for a client. I've been messing around with the idea of how to go about doing the project. Sure I can make a quick application to get the job done -- but I want to take this opportunity to do it right. I know I want to implement an MVC framework and have been looking around for what people usually go for these days -- MVC in the backend or front end. After doing some looking around, I decided I'm going to stick to my guns and go with a Javascript based MVC. But then I decided to take it one step further. Now usually until this moment, I've used a makeshift approach to doing RESTful API calls. I've created either <code>.cfm</code> or <code>.cfc</code> templates and components that spit back JSON formatted data -- just within the actual standards of REST. REST is one of thise <em>new</em> things that is being worked on so the <em>guidleines</em> have to still be ironed out.</p>

<p>What do I mean by standards? Well for one thing, REST calls are usually done by calling pages like this:</p>

<pre><code>https://example.org/API/1.0/users (get user list)
</code></pre>

<p>In my case, I was making calls like:</p>

<pre><code>https://example.org/API/1.0/users.cfc?method=getUsers (get user list)
</code></pre>

<p>So although not completely within the guidelines, the output is in REST standard format (JSON). The main reason for deviating from <em>clean</em> endpoints is because the environment I had to work with. At work we are still working with Coldfusion 8. So clean URLs can be done but take a lot of work and REST isn't supported outright by Coldfusion until version 10. Most businesses have a hard time with upgrading to the latest and greatest version because of costs (Adobe Coldfusion license are SUPER expensive) and possibility of system failure with incompatibility. So it's a huge step to take and I get that -- but it makes it difficult for developers to do their job efficiently. But alas, being a developer we must adjust, and most of us do so quietly.</p>

<p>With this new client, we are using PHP/MySQL as a backend and it opens up a lot of doors that aren't usually opened. The great thing about PHP is that it is free and is updated quite frequently to support the newest tech. So this project was going to be a little more fun. </p>

<p>Up until now I have primarily focused on the design of the web app. The clients have been super happy with the direction I'm taking. Now that the designs are approved, we are going to get into the actual coding of the application. My choice of a backend solution this time is going to be <a href="http://laravel.com/" target="_blank">Laravel</a>. I've used a few frameworks in PHP in the past, but nothing like this. <strong>Laravel</strong> is supposed to be a lot cleaner and lighter. So far from the testing I'm kind of liking it. Setting it up on my public testing domain was easy with a few tweaks to make it work and secure the installation. Installing it on my local testing box took a little bit of time because what I found out to be permission issues. Note to self: follow all directions thoroughly -- even if the instructions are merely <em>suggestions</em> vs actual <strong>required</strong> steps.</p>

<p>Since I'm just using the RESTful parts of Laravel, it'll be interesting to see what happens when I merge the REST framework with MarionetteJS's MVC approach. The nerd inside of me is super excited.</p>]]></content:encoded></item><item><title><![CDATA[Frameworks, Frameworks, Frameworks]]></title><description><![CDATA[<p>On the road of web development, time-to-time you find yourself choosing a platform to develop on -- whether it is a client-side application or strictly backend. When I first started out I was strictly developing in HTML then ASP and then finally PHP for a very long time. At my</p>]]></description><link>https://joynal.com/blog/frameworks-frameworks-frameworks/</link><guid isPermaLink="false">a3dde44e-b7e7-41eb-a0c9-9f6827ab5a70</guid><category><![CDATA[Development]]></category><category><![CDATA[Frameworks]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Wed, 19 Mar 2014 17:36:30 GMT</pubDate><content:encoded><![CDATA[<p>On the road of web development, time-to-time you find yourself choosing a platform to develop on -- whether it is a client-side application or strictly backend. When I first started out I was strictly developing in HTML then ASP and then finally PHP for a very long time. At my current job I started using Coldfusion as a backend solution. But recently I have been more interested in front-end work using client-side scripting with Javascript/CSS. A consequence of that has been me moving over to more MVC (Model-View-Controller) type development. Depending on the size of your project, MVC can be a great thing or just overkill for what your application to do.</p>

<p>MVC frameworks are great for when you have an application that will eventually grow to be a full featured application. It make adding modules and functionality super easy and organized. If you make a change to one area theoretically it won't break other areas. It keeps things nice and separated -- mostly your data and your actual views.</p>

<p>Traditionally the concept of MVC is applied mostly to backend development but recently it has been moving more over to the front-end. What does that mean? Before you would simply use backend solutions like PHP or Ruby to create an MVC type application and you would have the following setup:</p>

<ul>
<li>Model: Database</li>
<li>View: HTML/Javascript/CSS</li>
<li>Controller: Action pages on the server</li>
</ul>

<p>Nowadays things have slightly been changing. Instead of having the MVC framework exist only on the server, the whole concept is being shifted into Javascript. Frameworks like AngularJS, BackboneJS, etc. have been coming up like wild fire. I've used a little bit of everything to get my feet wet and I gotta say they are super impressive. </p>

<p>I've mostly stuck with BackboneJS only because it is the <em>barest</em> of them all. It comes with very little assistance and most of what you need extra you have to code it in yourself. I don't like it when I make an application and am <em>told</em> how to format my code or how to use it in order for it to fit the framework. BackboneJS let's you do what you want -- for the most part.</p>

<p>So far what I've done is use MarionetteJS (fills in the gaps that BackBoneJS has) and built MVC format applications:</p>

<ul>
<li>Model: Async calls to the server/database (RESTful)</li>
<li>View: Underscore / Handlebars Templates</li>
<li>Controller: Javascript functions within the application</li>
</ul>

<p>I've learned through the years, that backend programming languages will change and vary greatly between clients. You can have one client use strictly ASP.net another one use Coldfusion or in extreme cases (god forbid) Java. In any case you don't want to have to re-learn MVC or any kind of framework in a completely different language for just one project. Yeah sure the experience would be awesome -- but sometimes you just don't have the <strong>time</strong>. Idealistically, if you can just figure out how to get the data off the server using the available backend language, you can just use the Javascript MVC you are so used to and produce the application without fiddling around too much with the actual server.</p>]]></content:encoded></item><item><title><![CDATA[Weekends At Home]]></title><description><![CDATA[<p>I moved out of my mom's house about 3 years ago. It was one of the best decisions of my life. It let me be able to focus and filter out a lot of noise. It also saved me a huge commute everyday to work (about an hour or so)</p>]]></description><link>https://joynal.com/blog/weekends-at-home/</link><guid isPermaLink="false">f02c4f2d-2b0b-4b1d-8552-a1f2e72999be</guid><category><![CDATA[Family]]></category><category><![CDATA[Home]]></category><category><![CDATA[Weekends]]></category><category><![CDATA[Mom]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Sat, 15 Mar 2014 06:11:03 GMT</pubDate><content:encoded><![CDATA[<p>I moved out of my mom's house about 3 years ago. It was one of the best decisions of my life. It let me be able to focus and filter out a lot of noise. It also saved me a huge commute everyday to work (about an hour or so). It also let me be exposed to the true side of life: bills, bills, and more bills. Bright side is that I won't be blind-sided by life in the future when I have a family and an actual house.</p>

<p>As great as moving out has been, I still value my family. Every weekend I try to go back up north to see my mom and the family. Call me a momma's boy or whatever, but I do love my mom and it brings a smile to her face whenever I make it up there. It really feels like I never left college. During my college years, I used to always come back home on the weekends (and get my laundry done). </p>

<p>It's refreshing really. Being alone for the entire week is nice be can be overwhelming at the same time. Having a family to go back home to is pretty sweet and I wouldn't trade it for anything else in the world. </p>

<p>Most of the times I can barely pull myself away from my work -- be it a project for work or just a personal one -- I get so sucked in I forget what day of the week it is. When I come back home to my mom and my cousins, I am <em>forced</em> to talk and have fun with them. Pulls me away from whatever work-related stuff I have to do. Best part is when I do get back to work -- my mind is like super energized and I think of things I hadn't thought of before. That's something I learned over the years too -- whenever you're working on something and just can't figure it out: walk away. Like literally walk away from the problem and come back to it. Sometimes you're so deep into it you can't see the obvious things around you. It always works.</p>

<p>Right now I'm writing this and doing some development work in the family room while my mom is watching her Indian soap operas. </p>

<p>Oh and there's always free food at home -- so that's always great.</p>]]></content:encoded></item><item><title><![CDATA[The Last Meal]]></title><description><![CDATA[<p><img src="https://joynal.com/blog/content/images/2014/Mar/IMG_20140314_135428.jpg" alt="Juicy!"></p>

<p>So starting Monday I'm gonna be living on that new lifestyle called P90X3. What does that mean? Well for one thing no fun. Just kidding. Well I can't be <em>enjoying</em> myself like I used to with foods like:</p>

<ul>
<li>Candy </li>
<li>Huge sandwiches (from Subway and Renato's)</li>
<li>Ice cream</li>
<li>Milk &amp; cookies</li></ul>]]></description><link>https://joynal.com/blog/the-last-meal/</link><guid isPermaLink="false">f3b46957-785e-4957-8716-2ed94f89861a</guid><category><![CDATA[Life]]></category><category><![CDATA[Food]]></category><category><![CDATA[Love]]></category><category><![CDATA[Quote]]></category><category><![CDATA[Renato's]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Fri, 14 Mar 2014 17:08:52 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://joynal.com/blog/content/images/2014/Mar/IMG_20140314_135428.jpg" alt="Juicy!"></p>

<p>So starting Monday I'm gonna be living on that new lifestyle called P90X3. What does that mean? Well for one thing no fun. Just kidding. Well I can't be <em>enjoying</em> myself like I used to with foods like:</p>

<ul>
<li>Candy </li>
<li>Huge sandwiches (from Subway and Renato's)</li>
<li>Ice cream</li>
<li>Milk &amp; cookies</li>
<li>Gummy Worms</li>
<li>Gummy Bears</li>
<li>Burgers</li>
<li>Milkshakes</li>
<li>Pizza</li>
</ul>

<p>That is just a basic list. I'm sure there are others I've forgotten but those are my usual suspects. I live a life of anxiety and my anxiety drug of choice is food. I abuse the crap out of it. See I'm what you call a <strong><em>snacker</em></strong>. I always need to be fixated on something like food to be able to accomplish my real life tasks. It sucks but that's just how it is -- now that I'll be on the program I'm going to have to re-learn how to do things. </p>

<p>It won't be a complete cold turkey though. I'll still have coffee /drool. Also I can snack right? I'm a fan of apples and bananas -- so I can do some <em>substitutions</em> here and there. </p>

<p>The summer is right around the corner ladies &amp; gents -- I don't wanna be caught being that guy who sweats all the time. </p>

<p>Anyways so today is literally the last work day until Monday and the next three months of my life. So today I'm gonna order the Renato's Special (that things is a godsend -- if you haven't tried it, try it) and savor the crap out of it. I don't know when the next time I have it is gonna be, so I will live every moment &amp; bite of it like it was the last.</p>

<p>I love food. I sometimes have days where I start to hate it because of what it does to me -- but at the end of the day I always go back to it. It's like I'm in an abusive relationship -- damn.</p>

<p>Quote of the moment by <strong>George Bernard Shaw</strong>, <em>Man and Superman</em>:</p>

<blockquote>
  <p>“There is no love sincerer than the love of food.”</p>
</blockquote>

<p>Amen brotha.</p>]]></content:encoded></item><item><title><![CDATA[Revisiting An Old Life]]></title><description><![CDATA[<p>So my going to the gym in the morning hasn't been working out quite as planned. Just can't bring myself to getting up in the morning and leaving the apartment -- I always find an excuse like too cold, too ugly out and best of all: <em>just a few more</em></p>]]></description><link>https://joynal.com/blog/revisiting-an-old-life/</link><guid isPermaLink="false">21219d84-9026-4f1a-b54d-35c82d9a1feb</guid><category><![CDATA[Life]]></category><category><![CDATA[Workout]]></category><category><![CDATA[P90X]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Fri, 14 Mar 2014 03:40:01 GMT</pubDate><content:encoded><![CDATA[<p>So my going to the gym in the morning hasn't been working out quite as planned. Just can't bring myself to getting up in the morning and leaving the apartment -- I always find an excuse like too cold, too ugly out and best of all: <em>just a few more minutes of sleep</em>. I've gained like about 20 lbs since last summer and my back as been feeling it.</p>

<p>As fate would have it, the other day I got a phone call from a friend (Alex). What started out as a normal conversation took a turn for the worst. He brought up this old program I did back in college called P90X -- it was a good time in my life. Was fit and healthy and my body was agile as ever. The problem was the amount of time it took daily to keep up with the program. Eventually nearing the last few weeks I got distracted with stuff like going out and eating like a pig.</p>

<p>Our conversation went on and he asked me if I could join him to do the new version of P90X called P90x3. At first I was like <em>Oh god</em> and then was I was <em>super</em> hesitant about it. But I have this thing where I can't let people down. And hey doing this is probably the best thing I can do for myself. So I agreed but told him I would look into it and let him know in a few days if I'm actually going to put myself through it all again.</p>

<p>So the next day I started looking up some reviews and stories from people who have done the new program. As I looked around, I found out that this is a super new program that was just released in December. Oh yeah forgot to mention, this program is lead by <strong><em>the</em></strong> coolest guy in the world <strong>Tony Horton</strong>. This guy is <em>beyond</em> energetic and full of life. Say what you want about him, but he is probably the coolest guy I know (virtually). Anyways, since the program was fairly new, the reviews and stories were pretty limited -- hell because it's a three month program, people are still in the first phase of it.</p>

<p>So from what I could find about it and the differences between this version vs the first version I tried a few years back is:</p>

<ol>
<li><p>This one is much quicker than the first -- like literally 30 mins vs the original 60+ minutes. Now yes, this doesn't include the warm up and cool down, but still the amount of time is much less than the original.</p></li>
<li><p>According to the testimonials, this one is much better and efficient in weight loss and acheiving personal goals. Now this remains to be seen only because everyone's body is different. So I'll see how it goes as time goes on.</p></li>
<li><p>The Yoga portion of it is <em>significantly</em> shorter. When I say significantly, I mean much less than the 90 minutes the original one was. Yoga is amazing for the body and helped me out a lot, but doing it for 90 minutes straight was just so overwhelming.</p></li>
</ol>

<p>Everything else is relatively the same from what I've seen -- but again I won't know till I try it. </p>

<p>I decided to go with it and do it as a team effort with Alex -- Call it peer-pressure or even me needing a reason to do something good for myself -- either way I probably needed the push. So far I'm just reading through the material and trying to plan out the next three months. Obviously it won't go completely according to plan -- but it's nice to have some sort of blue print.</p>

<p>I'll keep updating this blog with results and what not -- should be an interesting three months coming up. Oh and the first one to back out of this program within the three months buys liquor for the rest of the year. It's always nice to have an incentive for not quitting (or quitting first =]).</p>

<p>Quote of the night from <strong>Mark Twain</strong>:</p>

<blockquote>
  <p>“The secret of getting ahead is getting <strong>started</strong>. The secret of getting started is breaking your complex overwhelming tasks into small manageable tasks, and starting on the first one.”</p>
</blockquote>]]></content:encoded></item><item><title><![CDATA[Changing It Up]]></title><description><![CDATA[<p>So tomorrow (today since it's passed 12am here) is going to be pretty nice out here in North Jersey -- we're getting temperatures up to 60 degrees. Huge change from the frigid temps we have been getting from all the storms. Unfortunately this victory will be short lived because two</p>]]></description><link>https://joynal.com/blog/changing-it-up/</link><guid isPermaLink="false">879061db-cdad-4efa-9bad-01697638511e</guid><category><![CDATA[Changes]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Tue, 11 Mar 2014 05:04:44 GMT</pubDate><content:encoded><![CDATA[<p>So tomorrow (today since it's passed 12am here) is going to be pretty nice out here in North Jersey -- we're getting temperatures up to 60 degrees. Huge change from the frigid temps we have been getting from all the storms. Unfortunately this victory will be short lived because two days after (Thursday) it's going to drop back down to 22 degrees. It sucks but hey I'll take what I can get at this point.</p>

<p>I failed miserably when going to the gym this morning. Was at my parents house for the weekend and the one hour commute is a huge turn off when waking up. Needless to say I couldn't motivate myself to get up and go early to the gym. But I'm back in my apartment tonight so I shouldn't have any excuses this time -- and the temperature is going to be pretty nice so definitely no excuses.</p>

<p>I did pretty well with eating clean today (snuck in two somoas [girl scout cookies] though during work) -- also had some green juice after a long time. I love juicing but it's so time consuming. I have an auger so it's not as fast as other models but it's more efficient and less heat is applied to the juice. On average it takes me about a half hour to make the juice and clean up. A little less than a year ago I went on a green juice diet and had it for thirty days straight -- I got so sick of it but I was in the best shape I had been in a long time. Fell off the wagon after that and hopefully I'll be able to get back on in the next few months.</p>

<p>Speaking of change -- I'm working on a big change in the next few months but am going to keep it close to the chest. So far everyone who I've discussed this with have all agreed it's not the best of ideas -- but sometimes the best ideas are the ones that no one agrees with initially and it turns out for the best. We have to take risks every once in a while to reap the rewards -- otherwise life would be so linear, utterly predictable and boring. But as of right now still mowing over the details and mums the word.</p>]]></content:encoded></item><item><title><![CDATA[Trials & Tribulations (and Mockups)]]></title><description><![CDATA[<p>This weekend I took some time to practice mocking up an application. Afterall, <em>practice makes perfect</em>. I first started out with a normal notebook and pencil. It was going pretty great until the little things started getting to me. First I suck at drawing straight lines. I do well for</p>]]></description><link>https://joynal.com/blog/trials-tribulations-and-mockups/</link><guid isPermaLink="false">2f0b36c7-a737-4411-bdb3-0f0e3b480ae0</guid><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Mon, 10 Mar 2014 16:37:16 GMT</pubDate><content:encoded><![CDATA[<p>This weekend I took some time to practice mocking up an application. Afterall, <em>practice makes perfect</em>. I first started out with a normal notebook and pencil. It was going pretty great until the little things started getting to me. First I suck at drawing straight lines. I do well for a few seconds and the BOOM I get a bump. So then I took a ruler and it made things a little easier. After that I was on a roll till I noticed my pencil was getting to dull and too often. It was making my marks less precise. So then I went out to the store and picked up a mechanical pencil -- the lead breaks more often but hey its more sharp more often. While I was there I saw some graph paper -- grabbed some of those too.</p>

<p>At that point I had everything and spent a long time making practice marks and shadings -- it was a pertty cool experience. Eventually I'll bring it all over to Illustrator but for now I'm going to keep conditioning myself. Something I saw during my weekend was a Dot Grid Book. Basically instead of solid lines like a graph has, they have dots aligned so you can draw straigh lines and align things properly without having unecessary clutter like other lines.</p>

<p>There are two flavors that I've seen are popular: <a href="http://dotgrid.co/product/dot-grid-book-a5-black/" target="_blank">Dot Grid Book</a> and <a href="http://www.theghostlystore.com/collections/behance-action-method/products/behance-dot-grid-book" target="_blank">Behance Dot Grid Book</a>.</p>

<p>I'm leaning more towards the <strong>Behance Dot Grid Book</strong>. The only downside is they are both pricey compared to my Graph Notebook I picked up for 3 bucks. So for now I think I'll stick to the graph pages until I get good enough and can make the Dot Grid books profitable in some way. Money drives us (and pays for my lunches).</p>

<p>So far the experience is pretty sweet -- I feel drawing and laying out your ideas is a great way to make room and form new ideas. It's a great way to unlock new potential.</p>]]></content:encoded></item><item><title><![CDATA[The Secured Life]]></title><description><![CDATA[<h3 id="backstory">Back Story</h3>

<p>Most websites come in two flavors: <em>secured</em> or <em>unsecured</em>. So what does that mean? Have you ever been to a site and in the address bar you see something like this:</p>

<p><strong>Unsecured Example</strong></p>

<p><img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_08_at_1_14_53_PM.png" alt="Unsecured"></p>

<p>And on the other hand you see sites like this:</p>

<p><strong>Secured</strong></p>

<p><img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_08_at_1_16_51_PM.png" alt="Secured"></p>

<p>The second one makes</p>]]></description><link>https://joynal.com/blog/the-secured-life/</link><guid isPermaLink="false">d2740b9c-5618-43fa-ac8d-320ceb5c8069</guid><category><![CDATA[Ghost Setup]]></category><category><![CDATA[SSL]]></category><category><![CDATA[Proxy]]></category><category><![CDATA[Ghost Blog Enhancements]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Sat, 08 Mar 2014 18:18:48 GMT</pubDate><content:encoded><![CDATA[<h3 id="backstory">Back Story</h3>

<p>Most websites come in two flavors: <em>secured</em> or <em>unsecured</em>. So what does that mean? Have you ever been to a site and in the address bar you see something like this:</p>

<p><strong>Unsecured Example</strong></p>

<p><img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_08_at_1_14_53_PM.png" alt="Unsecured"></p>

<p>And on the other hand you see sites like this:</p>

<p><strong>Secured</strong></p>

<p><img src="https://joynal.com/blog/content/images/2014/Mar/Screen_Shot_2014_03_08_at_1_16_51_PM.png" alt="Secured"></p>

<p>The second one makes you feel a little better right? Well it should. I could go into this who encryption tutorial but just know going to just <code>http://</code> will mean any data you submit to a site is unsecured and unencrypted and can be read by anyone because it's all plain text. But if you got a site with <code>https://</code> (assuming they have a valid site certificate) that means all the data you submit or are accessing is encrypted and safe (for the most part ;-]).</p>

<p>Usually e-commerce sites that have shopping carts or use a credit in any way use the <code>https://</code> protocol to keep your data safe and give the end-user a peace of mind.</p>

<h3 id="setupyourghostblogwithssl">Set up your Ghost Blog with SSL</h3>

<p>When you buy a domain, sometimes they give you an SSL cert or you have to go out and buy one. Generating and setting up takes a little bit of time and there are resources available online showing you how to do it.</p>

<p>In my case everything I needed was a Google search away. I had to make a few modifications here and there to make it fit my needs. For instance, I use nginx as a webserver and have Ghost running on NodeJS elsewhere. So I use this thing called Proxy Pass in nginx to do the behind the scenes forwarding.</p>

<p>I had the option to either make my site completely SSL or just parts of it. The upside to having all of it set up using SSL is that the site is secured. But the downside is its always going to have some unecessary overhead if the content you are accessing doesn't have to be secured (like seeing an image or something). </p>

<p>I like having a complete package and all -- but I also like having options and not be limited to just one thing.</p>

<p>In my case I needed to set up just the admin panel of Ghost set to SSL. If you search around, you'll find if you set the <code>forceAdminSSL</code> to <strong>true</strong> it will redirect the Admin instance of Ghost to SSL always. </p>

<p>This works fantastic except one thing was left out of the documentation: If you have a server set up to do <code>proxy_pass</code> (nginx to NodeJS instance of Ghost through port 80) then you have to forward the <code>X-Forward-Proto</code> value to the proxy setup. If you don't, you are going to get an infinite redirect loop when visiting the admin panel of Ghost.</p>

<p>Add the following line to the proxy setup area of your nginx configuration file:</p>

<pre><code class="language-prettyprint">proxy_set_header X-Forwarded-Proto $scheme;  
</code></pre>

<p>Here's where you add it in the nginx configuration file:</p>

<pre><code class="language-prettyprint lang-json">        location ^~ /blog/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;

            proxy_pass http://127.0.0.1:2368;
            proxy_redirect off;    
        }  
</code></pre>

<p>This forwards the protocol used in the URL request. Otherwise although we are hitting the <code>https</code> version of site, we are still only hitting the <code>http</code> of the Ghost instance here:</p>

<pre><code class="language-prettyprint ">proxy_pass http://127.0.0.1:2368;  
</code></pre>

<p>After doing all that restart Ghost and nginx and you should be golden.</p>

<p>If you have any questions, drop me a comment and I'll see what I can do :)</p>]]></content:encoded></item><item><title><![CDATA[Pimping Out Blog]]></title><description><![CDATA[<p><strong><em>Warning: Entry gets a little techy.</em></strong></p>

<p>The Ghost Blog Platform (the engine running this blog) runs on NodeJS and is relatively new -- so it makes us beg for more when it comes to integration with other services like Twitter, Google, FaceBook, etc.</p>

<p>But slowly I'm looking around and finding</p>]]></description><link>https://joynal.com/blog/pimping-out-blog/</link><guid isPermaLink="false">7d732a20-4538-4370-9592-27de6d23b5e3</guid><category><![CDATA[Ghost Blog Enhancements]]></category><category><![CDATA[Tech Goodies]]></category><dc:creator><![CDATA[Joynal Rab]]></dc:creator><pubDate>Sat, 08 Mar 2014 05:01:16 GMT</pubDate><content:encoded><![CDATA[<p><strong><em>Warning: Entry gets a little techy.</em></strong></p>

<p>The Ghost Blog Platform (the engine running this blog) runs on NodeJS and is relatively new -- so it makes us beg for more when it comes to integration with other services like Twitter, Google, FaceBook, etc.</p>

<p>But slowly I'm looking around and finding ways to implementing it manually myself. Tonight I managed to get two things added:</p>

<ul>
<li>Disqus comment system</li>
<li>Google Analytics</li>
</ul>

<p>So now you will be able to (if you're interesed ;-]) to comment on the blog posts using the commenting system and I'll be able to track some site statistics via Google.</p>

<p>For anyone running a Ghost Blog and is interested and implenting either Google Analytics or Disqus follow the following links for a thorough walk through:</p>

<p><strong>Google Analystics:</strong> <a href="http://www.inmotionhosting.com/support/website/ghost/adding-google-analytics-to-ghost">http://www.inmotionhosting.com/support/website/ghost/adding-google-analytics-to-ghost</a></p>

<p><strong>Note:</strong> I made a slight change from what the article tells you to do. I added my Google tracking code to right before the <code>&lt;/body&gt;</code> tag in the <code>default.hbs</code> file. Had issues with the blog loading when I added the code before the <code>&lt;/head&gt;</code> tag.</p>

<p><strong>Disqus:</strong> <a href="http://blog.christophvoigt.com/enable-comments-on-ghost-with-disqus/">http://blog.christophvoigt.com/enable-comments-on-ghost-with-disqus/</a></p>

<p>If you need any help with this, leave a comment below. </p>]]></content:encoded></item></channel></rss>