text:
06 1 / 2014
26 11 / 2013
Tough Day in ClojureScript-Land
Frustrating day yesterday in the world of ClojureScript. So frustrating, in fact, that I'm writing a blog about it to spare the next poor soul who struggling with the same issues Nhu and I did.
I find my love/hate relationship with Clojure(Script) interesting. It's beautiful code, well-named methods, succinct, but the errors you get when things go wrong are just….sooooooo vague. It makes it a frustrating experience to say the least.
Now let me back up a bit and take you through our journey yesterday…
Nhu and I are working on a client project that the team wishes was all Clojure and ClojureScript. The Clojure-side has been exciting. Like I mentioned above, the codebase is gorgeous, succinct and easy to read. It is so nice working on that side of things!
On the other hand, Nhu and I have been setting up the ClojureScript side of things and on that side, the "dark side" if you will, things haven't been so smooth (my guess is lack of experience plays a huge role here). And the term "haven't been" in the sentence above = 2.5 days with little progress.
To say we are frustrated is an understatement.
Friday, we spent a good two hours just getting a basic ClojureScript test to work. The test read like this:
(it (should= 1 1))
Thanks to Micah and a lot of configuration changes, we left Friday with the test passing (guess our logic was right after all /s), versioning ironed out and were finally ready to write some real code Monday morning.
Monday, 9:30am
We started off the morning by creating a new branch and cleanly copying in our newfound configurations.
Problem was, nothing worked. The error we were getting was this:
cannot find variable specljs
If we rolled back to the old project, the one (and only) test ran, but in the new project, no love.
We copied *almost* every line over. We even downloaded a Sublime "file diff" package to double-check that our code was exactly the same as in the Friday project. We must have tried everything under the sun to get that code working.
In the end, Myles figured it out, but not without a lot of looking and poking (which, thankfully, helped soothe my bruised ego). The problem? We had created both our test file and our source file but the source file didn't have a namespace.
Guess that's TDD for ya, eh?! (Don't create it until you need it.)
Instead, the "src" file had been blank all along and this is a no-no in Clojure.
Monday, 11:30
Now, we pushed the finalized configurations and starting to work on real code. But…really….this time it's gonna happen. This time we're writing real code.
First up…
We're using Domina and Hiccups (although we'd really like to use just raw HTML), so there was a lot of trial and error getting all of that configured in the project.clj, source files and spec files.
It was slow but we made it to the end of getting the dependencies in order.
Ah, the smell of progress is sweet!
Next up, our first test. More fiddling.
How do you write Hiccups again? Does the string go inside the bracket or outside?
One passing test and one *almost* passing test and then we get stuck on this piece of code:
(dom/set-html! (css/sel "body") (h/html (html/text-field {:id "testfield"} "testfield"))))
The error we get is this:
Can't find variable: hiccups
Hmmmm…my first thought is that there's a dependency issue.
The "require" looks like this:
(:require-macros [hiccups.core :as h])
I've written Hiccups code before. It isn't that hard. Oh, but, this time, it is.
We have a well-written company internal application that we are modeling to help us along the auto-complete-clojurescript path. We got our Hiccups code from there. It's copied and pasted and I didn't fully read the line (this is foreshadowing).
Sidenote: When am I going to learn not to copy and paste code? Didn't I just write a blog post about this?!
Still not realizing what the error is, we get Colin Jones' on Teamviewer/Google Hangout to help. He immediately sees it. "What's html/text-field?"
Hmmm. What is html/text-field? I don't know because I copied and pasted it from Colin's code!! {sad face}
We proceed to the next test and write this code to make the test pass:
(defn populate-dropdown [items]
(doseq [text items]
(let [item (dom/single-node (h/html [:li text]))]
(dom/append! (dom/by-id "auto-complete") item))))
The error we get is something quite familiar to us by now. We're back to the stinkin' Hiccups error:
Can't find variable: hiccups
I immediately think "dependencies" again..but then we realize the previous test is using Hiccups?? So why are we getting a Hiccups error? I try a few more things then start banging my head on the desk.
We try *everything* (although obviously not) and wasted 1.5 hours on this "experience". It has completely worn us out and collapsed our spirits. {sad face}
In the end, Ben Trevor saved the day explaining that you also have to call "hiccup.runtime" like so:
(:require [hiccups.runtime])
Never would have known that.
Coming home after work last night tonight, I was explaining to my husband (also an apprentice) what a tough day I had moving from one problem to the next.
Three problems….that's what we got done today…working through three problems and about 25 lines of code.
He listened intently to the whole story and then asked this question, "Why didn't you ask for help sooner?" And then I paused…thought about it and said "I don't know." But with spelling things out in this blog post, I think I do know.
Every time we encountered a problem today, it took someone else's expertise to solve the issue. And, even though I know I would have likely spent days on those issues were it not for that particular person's expertise, I felt bad asking for help. Why??? What conjures this guilty feeling and how can I shut it off?!
Reflecting on this I realize, underneath it all, it's probably an ego thing. I wrote a post about this a couple of months ago…putting your ego in your pocket…but, obviously, it's not that easy.
Asking for help pushes me out of my comfort zone.
Hopefully the resistance to do this lessens over time.
Note to self: make this the desktop wallpaper on your Mac.
25 11 / 2013
Decorating with Patterns
Although I would love for this to be a post about decorating a room with patterns, it's not. So, if by some dumb "luck", you wound up here looking for that type of content, sorry!
I've learned quite a bit about the decorator pattern in the past few weeks, so here's a blog post dedicated to just that subject.
What books will tell you about the decorator pattern is that it's a "wrapper" pattern. It's a class (Always a class? I presume so.) that wraps functionality (i.e., "behavior") around another class.
Now, when will you use it? Most textbook examples show you cases where you have to add a lot of attributes to get a final product. In the Head First book on Design Patterns, the example they used was building a cup of coffee (from "Starbuzz"). The coffee is its own class and then each available ingredient in the coffee is another class - whipped topping, skim milk, mocha…
So, to build a cup of coffee, you chain ingredient classes together (plus the coffee class) to form an order…
One customer orders a coffee with mocha. Chain together mocha and the coffee classes.
One customer orders a coffee with skim milk and mocha. Chain together the skim milk, mocha and coffee classes.
Part of the reason you're chaining these methods together in the coffee example is to accumulate ingredients.
Conceptually, that may be hard to grasp. So, specifically, let's discuss something you'd want to accumulate.
Price would be one example. Weight would be another (say your building a machine with multiple parts that will have to be shipped and you need to know the final weight). Another example would be a product description…say, for instance, you are building a computer with customized accessories and you want a variable to hold the final description of the computer - "Dell computer with 4gb of memory and a 22-inch monitor" versus "Dell computer with 8gb of memory and a 27-inch monitor".
When I first read the text on the pattern, I was a slightly confused by the code. It went something like this:
Notice that with each initialization of a class, we are passing in another parameter. This means that each class takes a "coffee" object as a parameter.
So, back to accumulating totals…to accumulate a total price for a coffee, we give each of the classes a method of "price". The coffee's price method, in this example, is a fixed price - let's say $1.00. Then for each "attribute", we take the running total and add the price of the attribute to it, like this: $.20 += price.
Since I found the code a bit hard to follow, it was interesting to write my own example and see it working. It's pretty cool how it works actually. It's something I would have never really thought of building without studying design patterns, but was pretty enlightening after I tried it for myself. You can see my example here.
In the past, I've heard my husband mention "decorators" a few times, so, once I got the logic under my belt, we talked about where he had seen decorators being used. His example was wrapping an existing class to add additional functionality. More specifically, since his company uses Spree as a codebase, they will wrap a class (for example, the "Checkout" class) with a separate class to force the existing class to perform additional functionality that it wasn't previously doing.
Now, the non-apprentice Kelly probably would have been confused by this concept. Why not just change the existing checkout class? It's open source. You have access to it.
What I've learned since I've become an apprentice is that it's just not in your best interest to do so. It's often called "monkey patching" and most craftsmen consider it to be ugly. A good example of why this is ugly would be that new members of the team might not realize the new functionality exists. They may have had previous experience with the original code in "Checkout" and now that they are on your team, they have to go dig through the class trying to understand what functionality you've added. If, instead, you wrapped the additional functionality in a decorator class, the intent is much more clear. The new team member only has to read the class with the additional functionality to get up to speed.
Another place where decorators would prove useful in working with a pre-existing codebase is when upgrading the codebase. In working with Spree, the codebase is maintained by an outside group of developers. So when those developers upgrade the codebase and you've monkey-patched a previous version, it is going to be extremely painful to upgrade and those upgrades could be critical to the security of your system (Ask me how I know.). In order to upgrade, you'd likely have to go through all of the new changes (and there could be LOTS) to figure out how to integrate your now-custom codebase with the new code, whereas, if you've utilized the decorator pattern, although it's still going to be a painful process to upgrade, seeing your custom code in individual classes allows you to handle it more easily.
Studying the decorator pattern allowed me to reflect on a conversation I had from my previous career when we were contemplating switching platforms. We had contemplated switching shopping cart platforms several times throughout the course of our business. At the time, the platform that often came up in discussion was Magento. I would often ask why developers talked so highly of it and one answer was common…Magento had "layers": one layer for the core Magento codebase and one layer for each merchant's custom functionality. It was explained that this was the way to go since it created a clean codebase that could be continually upgraded with much less pain. I can't help but wonder now if these "layers" really were just a glorified use of the decorator pattern?
One last thing I've learned about the decorator pattern was a conversation I had with Doug just a few days ago. He had mentioned the same thought once before but I just didn't get it - "Many developers will wrap an existing class with new functions and mis-label it as 'a decorator'". But they are adding new functionality. Why is it not the decorator pattern?
This past Friday, we had more time to go over an example and he was able to clear up the confusion. If you are, in fact, changing the behavior of a class, you are definitely using the decorator pattern. But if you are simply adding new functionality, it may not always the case.
The difference here is whether or not new methods are public or private. If the new methods are private, they are being integrated into public methods and, thus, the functionality of that public interface is changing. If you are simply adding public methods to a class, you are, in essence, simply changing the interface, not really changing existing behavior.
24 11 / 2013
Adding ClojureScript to a Clojure Project
I got to pair this week with Nhu Nguyen on client work. The task…add ClojureScript to a client Clojure project.
It ended up being a super-interesting experience that spanned a couple of days - only because we thought we had things working until we went to run a test a day later.
When I worked on the Dojo-Dashboard project, my team had already wired Clojurescript into the project before I came on board. Looking back now, there were so many holes in my thinking because I didn't have this configuration knowledge.
Often times, I've now come to realize, when things are working, I won't take the time to go back and read said "working things". Had I done so, though, things would have made a lot more sense.
So, first things first…in our main "src/" and "spec/" folders we needed to add "clj/" and "cljs/" folders. This is how we did it with Dojo-Dashboard and things seemed to work well then, so we just went with the same idea. We moved all of the existing code into "clj/" and created a small test method in the "cljs/" file to see if we could get it to compile and run.
The original task was to write an auto-complete function that would try to guess what you were typing as you input each letter (similar to how Google works). So we created an auto_complete.cljs file and added this code:
(ns client-name.auto-complete) (.write js/document "Hello, ClojureScript!")
From there, we added a script tag to one of the existing pages that would execute the compiled code and hopefully display "Hello, ClojureScript!" on the page.
But first, we had to get the code to compile. And that, folks, is where the real learning began.
One thing I love about ClojureScript, compared to Rails, is that all of the configurations are in one place (so far, anyways). And that file is in the root project directory - called project.clj. Everything feels so tiny and succinct compare to Rails and that has really started to make me fall in love with Clojure.
On top of this, everything in the project.clj file is just one big hash of configurations and that makes it so easy to read. Here's what the original project.clj file looked like before ClojureScript configurations were added:
And here's what the file looked like after:
Note: I re-created this before & after based on memory, so please don't rely on these two files 100% to set up your ClojureScript.
Things I learned from setting ClojureScript up are:
- It's pretty darned easy. That was amazing. I thought it was going to be so much harder than it really was.
- You need to add ClojureScript ("cljs") to the "dependencies" and "specljs" in the "dev:dependencies" for testing the cljs.
- Add an alias to run all test for both Clojure and ClojureScript. (Thanks to Taka for figuring this out on the Dojo-Dashboard project.)
- Now we have two directories of source code and two directories of test code, so we need to specify both directories with "source-paths" and "test-paths".
- All the cljs configurations go in their own key (see my code at the bottom of the second Gist).
- We set the compiler on production with a key of "advanced" so that all of the compiled code will be compiled into the same file.
- What happens when cljs is compiled is all right here…it's output to the "output-to" value.
That put so many different puzzle pieces together for me, it was pretty awesome. There was definitely a lot of ooooo's and I-see-now's going on.
And, although we got our "Hello, Clojurescript!" code to display correctly, we still had trouble with the tests when we went to write our first one the next day. The testing and compiling kept complaining about a "bin" file and the running the tests would just turn into a hung process.
Micah ended up helping us getting tests working and here's what I learned from that experience:
I definitely didn't understand every line I copied into the project.clj file (not good). When I got the :cljsbuild settings, my eyes kinda glazed over on some of it. We ended up copying and pasting code we didn't need. This line specifically:
:cljsbuild ~(let [run-specs ["phantomjs" "bin/specljs_runner.js" "resources/public/javascript/client_name_dev.js"]]
The code now reads like this:
:cljsbuild ~(let [run-specs ["bin/specljs" "resources/compiled-assets/client_name_dev.js"]]
For the Dojo-Dashboard project we had used phantomjs, but we weren't for this project. Also, there was no "bin/specljs_runner.js" file in this project. (Strike 2) Those are things I definitely should have looked at more carefully.
Another thing Micah did was upgrade all of the versions of specl, specljs, ClojureScript, etc. Versioning is something my eyes often hurry past when reading gemspec files and the like, so that definitely made me more aware of the fact…check versioning.
After working with Micah, I realized there's still a couple of the configurations I don't understand…namely the line with the "bin/specljs_runner.js" in it. In reading the "bin" file, I still can't really make heads or tails of it. This is what it looks like now:
Hopefully, I can ask Colin or Micah about it on Friday and understand more of what it's doing. I think it has something to do with phantomjs. Maybe it's time to dive into phantomjs and see what that's really all about.
24 11 / 2013
Waza you learn today?
This past Friday I got the opportunity to pair with Doug Bradbury during Waza. We started off down the path of playing with the Raspberry Pi project he had been working on for the past few months, but we were quickly side-tracked by a completely different task.
For one of Doug's side projects, he maintains a Spree site for a few of his family members and the site had a production issue. So we jumped in to see what was happening.
The side story to this project is that, just a few days ago, Doug had upgraded the site form Spree 1.3 to 2.0 (2.1?) and, while in the process of upgrading, he went ahead and upgraded Ruby from 1.9.3 to 2.0. This, he later admitted, was a decision he regretted. Upgrading both libraries at once was risky. Although we didn't talk about the why, my thought was this: if something is wrong, how do you know which library is failing? Seems like a smart idea to upgrade one library, give it some time and then upgrade the next. On top of this, I don't think there was much for Doug to gain upgrading to Ruby 2.0. So it was better to be patient.
So what is Spree? Spree is a free Rails shopping cart that e-commerce business owners can use to build their websites (mostly small businesses I would guess). Shopify has also built a business selling eCommerce out-of-the-box shopping carts using Spree's platform as well, although, today, I would think Shopify's own platform has diverged quite a bit from Spree's.
Spree looks to be an awesome tool right out of the gate from what I can tell. There are tests (nice!), the code seems well-named and decoupled at first glance. I have some experience with eCommerce platforms as I built my (now-sold) business on a PHP open-source shopping cart platform called osCommerce. Sadly, at the time I made that unknowingly-HUGE decision to use osCommerce, we weren't aware of other platforms out there. Had I known about Spree at the time….*sigh* I can't help but wonder what my life would look like now.
Oh well, another topic for a different day.
On another note, I was interested to work with Spree, because my husband Mike, also an apprentice, works for a company that built their site using Spree as well.
First things first, the issue at hand was an XMLRPC error. We received the error message from Heroku when a customer wasn't able to create an account. Right away, Doug knew it had something to do with MailChimp integration.
So here's how it goes…when a customer creates an account on the site, they are automatically added to MailChimp through a Ruby gem called "Spree-Mail-Chimp" which uses another gem called "Hominid". The bug was related to code inside of Hominid, where XML-RPC was being used to retrieve and send data to Mailchipm (vs. API calls). After some searching, we quickly realized this was a Ruby 2.0 issue and the bug hasn't been resolved yet, but Doug's larger question was "Why? Why is Hominid using XML-RPC? Why not just use the API?"
So…more searching…Are there any gems that use Mailchimp's API? One, possibly. But lots more that didn't use the API. Next, we Googled for the MailChimp API and discovered it was pretty new functionality. So this made sense why the other gems used the XML-RPC functionality. So, on to our next task, ditching Hominid and updating the Spree-Mail-Chimp gem we were using to work with the API.
What sounded like a daunting task, ended up being pretty easy. And then, boom, the site was back in business. Here's our commit to the gem that now uses the Mailchimp API.
It was interesting to go through the process with Doug. We used the API documentation quite a bit and, sometimes I can't help but get overwhelmed by all the documentation. It can be confusing and unclear at times and I find myself getting frustrated. So it was nice to see Doug try to decipher this as well…it made be realize that sometimes it really is just a struggle and you have to try to read it in chunks, write some code, and read some more. Rinse and repeat.
In the end, it was pretty satisfying to do the work. Mailchimp is pretty popular amongst the same group of people that use Spree. In our research it seemed business owners had been complaining quite a bit about the XML-RPC error. So, it was nice that we could spend just an hour or two writing code that could help so many people - people, who maybe can't afford the help or just have no clue how to fix the problem.
Lastly, in testing the customer account creation, we found a separate issue with a missing entry to Spree's YML file. This was a bit surprising, since it was Spree's own code, but Doug said it was an easy fix. Surprisingly, we ended up making the fix twice. Once in Spree's core code, which we then submitted a pull request for (so fun!), but also in the aforementioned site's custom codebase so that the fix would be there for the time being while the pull request was pending. I was surprised that Doug acted so quickly to submit the pull request. For now, things like that would take me so much longer, so it's probably something I might have put on my "to do" list and made note of. But, it really ended up being an additional 5 minutes of work for Doug. It definitely inspired me to make more pull requests.
After all was said and done, I asked Doug about tests for the site. Did he have tests that ensured that a customer could create an account? His answer was "No". There were Spree's own tests and there was his own unit tests that he wrote when adding new features and functionality, but there were no integration tests that tested the existing functionality. He did admit that it would be nice to have some Cucumber integration tests that made sure the pages were rendering with the correct data, but he hadn't had time to implement those yet.
Later, I asked my husband this same question…if his team had integration tests surrounding their Spree platform. He said he understood Doug's predicament. It's not an easy task to go and add integration tests for Spree, but until you do, you have no confidence that everything is going right. He said at one point in his software's life cycle, the codebase around Spree had grown so large that they had to stop what they were doing and add Cucumber integration tests around the core site to gain more confidence in the system.
In the end, I learned so much. Not bad, for a Waza afternoon!
24 11 / 2013
Let's have a Bash
Today I took some time to play around with Bash, trying to get more comfortable with it. As part of this, I wanted to install a tool I had previously found called BashFinder, which I've attempted to install before, but could never successfully get it to work.
Part of the problem with installing BashFinder is that it requires two other installations that would lead me down other long and winding roads and I ended up having too many components that I was unsure about when things wouldn't work. Which part isn't working? What are these other components even for?!
Today, I patiently read through everything, taking my time, and, finally, victory was mine.
Starting off, BashFinder is a pretty cool tool for people like me that still can't break themselves of using the Mac Finder. Sometimes it's just easier. I'm sure a year from now, I probably won't use it at all, however, for the time being, I do, so BashFinder it is.
What BashFinder does is allow you to set the "pwd" (otherwise known as the active directory) in Terminal to the directory you have open in Finder. This happens automatically. As I'm "cd'ing" into various folders in Terminal, my Finder window opens as well.
This also works vice versa…your active directory in Terminal can be opened in Finder simply by typing the command "cdff". Pretty neat! And highly useful (for me at least!).
Unfortunately, there are two other tools needed for getting BashFinder to work:
- Git Completion
- Bash Completion
Both of these tools, once I got them figured out, ended up being huge bonuses in themselves. Git Completion (finally finally finally) allows me to use the tab key to auto-complete my branch names (woooohoooo!!). Bash Completion seems to do a ton of stuff (or so I've read after lots of research). For now, the most helpful thing it does is remind me of the names of commands (like 'grep' and 'ack'). I'm pretty new to using these commands and often forget how to go about using them. So this is where Bash Completion enters the picture.
Now, let's talk about Bash…
When I first started at 8th Light as an apprentice, Josh took the time to sit down with me and set up my Terminal to be more user-friendly. He installed his "dot files" on my computer and I was completely lost as to all that was going on. Fast forward to today, though, and thanks to a few other craftsmen (like Eric Meyer), I have slowly absorbed more and more and understand so much more now. I think simply installing tools like BashFinder teach you soooo much. It can be a frustrating experience, but just having to fix things on your own and troubleshoot your way through a problem teaches you so much,
What I understand now is that there are a host of configuration files on your computer under the home directory ("~/") for Bash. These might not exist when you first get started (they are not all necessary), but they are easy to set up and there can be A LOT of them (which I found a bit confusing in the beginning).
Back to BashFinder…
When installing the tool, I had to go through the various files quite a few times making sure all of my settings were configured how I wanted them to be (since, on a sad note, the BashFinder code includes quite a few configurations that aren't necessary for the tool to work…this ended up screwing up a lot of my other settings in the beginning, so I had quite a bit of deleting to do).
A few configuration files I learned about today…
- .inputrc - deals with the mapping of the keyboard for certain situations. This is the book definition anyways. An example of a command in .inputrc is this:
- .bash_macosx - where all of the BashFinder code lives; a Google search of this only turns of the Github page for BashFinder, so I'm guessing this isn't a standard file. This file's code is called by another file (see below), so it was probably just simply extraction by the author.
- .bash_aliases - a file typically used for specifying bash shortcuts (for example, "alias cls=clear").
- .bash_profile - where the meat is…this file has "if" statements similar to this one:
So .bash_macosx and .bash_aliases both have their own "if" statements included in .bash_profile. That's how they get loaded each time Bash is loaded. The only file that doesn't get loaded this way is .inputrc.
The reason for this is because .inputrc is a start-up file used by ReadLine (the input library used by Bash). Ah, another book defintion. The important point to note here is that since it's a start-up file, it gets loaded automatically when Bash is loaded.
Up next, .bash_profile in depth…
This brings me to my next point…when making changes to .bash_profile, in order to get the changes to show up right away, use this command:
source ~/.bash_profile
This reloads the .bash_profile file so you can see your changes instantly. (I only used this about a million times while trying to switch things around today.)
Now, in circling back to my original point, I now fully understand "dot files". They are simply a bunch of files that start with a "." (dot) and configure your environment. And, since everything is so configurable in Mac OSX, it makes sense that so many developers would have their own. Sidenote: Quite a few of the craftsmen at 8th Light save their "dot files" to Git which makes them easier to access and keep backed up.
I also have been impressed, that in reading them, 8th Lighters' dot files are well commented and broken-up into well-named functions (what else would you expect I guess??).
In reading back through Josh Cheek's .bash_profile, I had an urge to change the color of my terminal prompt as I've been using the same one for almost a year. Scrolling through the file, I found this code from Josh where the color magic happens:
I could see what he was trying doing here. The "PS1=" line is what sets the prompt. But the line itself is pretty messy. I played around with it for a good 10 minutes getting nowhere, not understanding which part was the color setting. So backing up a bit, I started researching how to set colors. From there, I created a list of variables for each color I would ever possibly want to use. I also learned that there was a specific set of numbers for foreground colors and another set for background colors. In the end, this is what I came up with:
So much easier to read if I do say so myself!
30 9 / 2013
How to get Jar files talking to each other in Intellij
Paul gave me the task of building a web application that integrates with my Java Server. Main requirement: it must make fun of a craftsman. So my app picks on Brian Pratt. It's titled "Brian the Cranky Tweeter".
As for functionality, the app contains a repository of Brian Pratt tweets (as well as a few other craftsmen tweets) and the user has to decide if a specific tweet is Brian's or not.
Now in order to get my app to work with my Java Server, Robert Looby, another apprentice here, gave me a couple of hints about making a configurable router that could "plug in" to my Java Server (more on that in a later post). To do this, I would be importing one .jar file into another .jar file.
But, first things first, how do I get two .jar files to talk to each other? Michael Baker once suggested that when you're doing something new for the first time, start with a blank project. So that's what I did. I created two projects - MainProject and SecondaryProject. And here's how to I got them talking to each other…
Below is what my Secondary Project looks like. I created two class methods…a main method and a method that returns the day of the week. Note, I used static methods, but you could use instance methods just as easily.
When I run the main method, I get a printed message "today is Mon".
Next, I create a .jar file from the SecondaryProject. One trick here is not to specify a Main class. Just leave that part blank. And, technically, you don't need the main method in this project. I just created it to test that my displayDayOfTheWeek() method worked above.
Once the .jar file is created, I moved on to MainProject. First step is to create a main method. Pretty simple.
Next, I imported the SecondaryProject .jar by going to "View" > "Open Module Settings" and the clicking on "Libraries". (If you can't see the "Open Module Settings" option on the "View" menu, it's probably because you have to first select the top level of your project in the left pane.
Once you add the library, it will show up in the left pane under "External Libraries".
Once the .jar is linked as a library, you can simply call the "Response" class (like below).
Once I write the code, executing the main method prints "Mon" to the screen.
And that's it! Pretty simple stuff.
29 9 / 2013
Including Files in Jar Files (Part 2)
So back in July, I learned how to do this neat function called getResourceAsStream in Java. It allowed me to configure a few templates (.html files) that my Java server needed (a file directory template, a 404 template, a form template), include them with my .jar and then copy them to a subfolder on the user's system and use them once the server was launched.
Problem was, this code was a bit of a headache. In my original code I had to hardcode the file names into my server in order to grab them. My original idea was to include a directory called "templates" in the .jar file and then write code that would iterate over each file in the directory, copying each one to a temporary directory. So I started searching for a sample solution.
And, as luck would have it, there are probably a good 20-ish posts on Stack Overflow where other developers have wanted to do the same thing. The answer though?
Can't be done.
Why?? From what I've gathered, it has to do with the fact that the templates folder is not truly a "file" when the .jar is loaded, so to grab the directory as if it were a file and iterate over the contents won't work.
I didn't buy it. Seriously? It can't be done? I find this hard to believe. So I kept searching and searching and searching. At one point, after too many hours of searching, I gave up and that's when I decided to just hardcode in the filenames. Viola. Not pretty, but problem solved.
Fast forward to this week when I was building my "Brian is an Cranky Tweeter" application (a story for another day) that sits on top of my server. In brainstorming how the application was going to work, one of my earliest thoughts was "Well, I'll definitely needs some views. I'll need a question page and an answer page and I'll put these in a"…{insert sound of brakes screeching}
Oh no. This was the point where I realized I was going to have to hard code MORE file names for my getResourceAsStream functionality. Really??
My opinion on the matter was this: it's one thing to hack some code to get it to work, but now I was going to have to hack more code on top of the existing hacked code and that just didn't seem right. Enough was enough.
In all of my prior researching to using getResourceAsStream on a directory, there was one "solution" I had stumbled on a couple of different times…use a zip file. But, at the time, this seemed hard and overkill.
So what would any good desperate apprentice developer do?
Start googling "zip file getResourceAsStream".
And in the end?
It wasn't even hard! It probably took an additional 5 lines of code and an hour or two of concentration.
So, if you ever need to use getResourceAsStream on a directory, save your breath and your fingers and just use a zip file!
29 9 / 2013
Gilded Rose: The Hidden Requirement
A few weeks ago, Mike Jansen, one of the craftsman at 8th Light coordinated an 8LU talk on the Gilded Rose kata. It was a simple exercise. We worked in pairs trying to decipher a huge nested "if" statement of legacy code that had no tests.
Before we began, Mike talked about why he loved the kata. I think his explanation went something like this: often times we find ourselves in a situation where we need to add additional functionality to an already-existing code base that has no tests. Stakeholders *know* the code works and rely on it (sometimes heavily), but it's old, people are afraid to mess with it, no one truly understands what is going on beneath the hood.
I've found myself in this situation more than a few times in my career but always on the business side of things. It's a frustrating experience. It leaves you feeling helpless that you can't get more from the functionality, anxious because if it did stop working things could turn impossible and, in my case, bitter because developers never seemed to really grasp how important the functionality was. Often times I would think, "If they could see things from my point of view, they would be working on that code tomorrow." Instead, often times, I got a lot of shrugging shoulders, "dunnos", and "We should just throw it away and re-write it from scratch." ARGH!
So, that said, I love the Gilded Rose kata. I've done it four times, start to finish and each time I learn better ways to refactor "if" statements. And it feel EMPOWERING to get better at the kata. Each time I do it, I reflect on all of the "mystery box" applications I've had to rely on in the past - code that was old, only did half of the job, and was abhorred by everyone.
The kata was the first kata I ever attempted when I came to 8th Light. I was new to testing, new to attr_accessors/attr_readers, and new to reading code that was split between multiple files/classes. So, for my first attempt, I tried what little I knew and then ended up downloading three solutions from Github and re-engineering others' code.
Needless to say, the Gilded Rose kata is a bit nostalgic for me being the first thing I ever did. When I worked on it during the recent 8LU, I paired with a friend of mine, Dave Kaplan, who just finished Starter League and is probably about where I was when I completed it my first time.
What an eye-opening experience! I knew exactly what I was doing this time around, which really spoke to me…."You've come a looooooooooooooooong way."
Dave and I didn't get very far during 8LU. In the 45 minutes we worked, we were able to surround the code with lots of tests that supported the README requirements, but didn't have much time to do anything else. So, this past week, I circled back to the kata in an effort to finish it on my own.
One thing I found surprising was that after writing all of my tests, I used the SimpleCov spec to make sure my tests were testing every line of code. If you've seen the Gilded Rose kata before, you'll probably remember that the code is quite a bit of a mess. So even after writing all of my tests, I wasn't 100% confident I was testing every line. Sure enough, SimpleCov showed me I was only testing 99% of the code and had one "else" statement at the very bottom of the codebase that wasn't being covered. After going over everything for another 20 minutes, though, I couldn't figure out why the "else" wasn't being executed by any of my test and the complexities of the nested "if" statements were wearing on me, so I gave up, chalking it up to "I bet it's an 'else' statment that never gets executed."
So wrong.
From there, I started refactoring the code going throug every "if/else" statement carefully, dissecting various pieces as I went and, sure enough, I found why the code wasn't being executed. I had, in fact, missed a test because the README had failed to mention one bit of functionality that the code was doing. Huh.
Next I went back through all of my previous attempts at the kata over the past year as well as the 3 solutions I downloaded from Github and guess what? In all but one of them, the solutions were missing the hidden requirement. The thought occurred to me then…Mike Jansen has mentioned this during the exercise. Often times, we *think* we know what this legacy code is really doing, but do we really?? In this case, the README detailed all of the supposed requirements of the kata, but, in reality, there was more functionality going on underneath the hood.
I think that's one reason it's so important we dissect legacy code ever so carefully, otherwise, we're bound to miss something. And before we know it, we will have a nice piece of beautiful, stinking garbage that doesn't operate in the same way the legacy code did. And no one realizes it until the code ends up in production and everyone is shrugging their shoulders and pointing fingers.
The first time I did this kata, I wrote tests relying on the README and attempted to decipher the "if" statement as I went. But somewhere along the way, the "if" statment's complexity starts to degrade (or maybe there were just parts of it that were the opposite - too complex?). So as I felt more confident with how the whole thing was working, I would skip steps, deleting the rest of the legacy code and finishing based on my own assumptions. I can only imagine that's what the other two Github coders did as well.
So if this was indeed an intentional missed README requirement, I consider it pretty brilliant. It definitely separates solution-goers into two camps - those who relied on the README only or those who relied on the README and the code.
So want to know what the missing README requirement was? Spoiler ahead….
The missing requirement that I found was that Aged Brie increases in quality twice as fast once the expiration data has passed. Per the README:
- Once the sell by date has passed, Quality degrades twice as fast.
The word "degrade" here caused me to assume that this requirement only related to items that had depreciating quality, so I excluded Aged Brie which actually increases in quality.
Of course, I could be wrong about the whole thing. If that's the case, I'm interested.
If you're up for the challenge, try it for yourself and let me know what you find.
17 9 / 2013
7 Minutes
Does setting your clock 10 minutes fast really work?
I had a conversation with my husband on the way to work the other morning regarding the time. We were driving my car. It was a simple question he asked, "Are we going to be late?" (We take the train.)
My answer went like this:
"Well, my car clock is 7 minutes fast and the train leaves at 7:42. So since the clock says 7:30, it means we have 12 minutes plus an additional 7 minute buffer, so we have 19 minutes. Now if we get to the gas station up ahead with 10 minutes to spare, then typically I know we'll be on time. So currently, we are 7-9 minutes ahead of schedule."
At this point, my husband did a doubletake and we both started laughing. "Wow! That's a lot of math!" was his response.
Ha! It is a lot of math and ever since he said that I have been thinking more and more about setting my clock "fast". We work so hard to make things as simple and understandable in code, so why do I want to mess with something as basic as time - making it so much harder than it needs to be.
I've set my clock fast for almost my entire adult life. Why? Does it really make me more on time? Do I feel more refreshed/relieved to have that "extra" 7 minutes of time? Is it really even extra?
I did some research tonight. Those in favor of setting clocks fast argue that you see the 7:42 time earlier and think, "Ohmygosh! My train is about to be here! I'm going to miss it!" but then you're quickly reminded that the clock is 7 minutes ahead so you think, "Phew! Silly me! I've still got 7 minutes."
Problem is that I never (ever ever) see 7:42 on the clock and think "It's 7:42 and I've missed my train." Instead, I'm always immediately subtracting 7 minutes. It's like a lookup chart I've got going in my head at all times…
7:30 => 7:23
7:35 => 7:28
7:40 => 7:32
About the only way a clock set fast would work, in my opinion, is if you didn't know how fast it was…if it was randomly changed each day. I've actually thought through this idea several times. Usually, in the morning I'll get up, shower and get ready and then eat breakfast with my husband in the kitchen. While eating breakfast, my eye is on the kitchen oven clock (set to the correct time). Now, wouldn't it be nice if, before coming into the kitchen, my husband set the clock 10 minutes fast but didn't tell me? That way, when I got in my car and saw the "real" time I would think, "Oh wow, I'm 10 minutes early!" From that point on, though, I would know the kitchen clock was 10 minutes fast and would spend the extra 10 minutes sipping coffee in the kitchen. So, instead, we would have to agree that he change the clock every morning before I came in so I had no idea how fast the clock was and would just need to rely on the time that was displayed. Crazy idea, eh?
In summary I think, "Why make it so hard?" I'm convinced it doesn't help much.
Tonight, I'm putting a moratorium on setting clocks fast. Will let you know how it goes.


text:
Tag Results
20 posts tagged button
20 posts tagged button
If isn't obvious from the photoset above, we are expecting a GIRL!!! We were excited either way, and now we know that Myla will have a little sister to grow up with! The bond between sisters is so special, and we are overjoyed to soon have two sweet little girls in our family and to share our lives with ❤
I wanted to crochet some new items for Baby Girl #2 as I didn't want the poor girl to have to wear all of Myla's hand-me-downs! I was ecstatic to find a free pattern for these "Double Strapped Baby Mary Janes" on ChiWei's blog "One Dog Woof"! They are absolutely adorable, and I love how they are quick to work up and really help with yarn stash busting since each pair uses such little yarn :)
I crocheted some pairs for our friends who were recently blessed with baby girls too! Click on each photo above to enlarge it for a better view! It was fun choosing the yarn colour combinations for each pair, and I love the look of wooden buttons as closure. The criss-cross straps make it hard for baby to yank these off as well ;) It's fun adding a pop of colour when attaching the wooden buttons with embroidery floss too.
I used all different types of yarn that were in my stash, including Lion Brand Vanna's Choice (grey and pink pair), Loops & Threads Impeccable (red and beige pair) and Patons Canadiana (white and tan pair). Each pair turned out a slightly different size since each yarn has a different thickness (even though they are all worsted weight yarn). The red pair held its shape the best and turned out larger and sturdier. Keep this in mind if you are trying to adjust for size!
We cannot wait to see some chubby little feet wearing these ❤ Once again, you can find the free pattern to make these baby Mary Janes on ChiWei's blog HERE!
Last Christmas I whipped up some of these adorable coffee sleeves as gifts and was delighted with how they turned out! I recently pulled out the pattern again and thought I would blog about it since I love them so much :)
You might be wondering what crochet stitch this coffee sleeve uses since it has such a beautiful braided look: it's actually the half double crochet! Instead of crocheting in both the front and back loops, you crochet in the third loop (found below the back loop of half double crochets). This free pattern is by "Frayed Knot" and is called the "15 Min Coffee Sleeve"- it's true that it works up extremely quickly, and adding a button is such a cute touch. So if you're in a scramble for a quick handmade gift, check out this free pattern HERE!
One day while shopping for yarn at Michaels, I came across this free adorable "Cupcake Dishcloth" pattern designed by Twinkie Chan. Twinkie Chan is the queen of yummy and deliciously cute crochet (check out her site here), and I had seen her mention this project before on her social media. I excitedly took a copy of the pattern home and began working on it right away with some Bernat cotton yarn that I already had in my stash!
I was very impressed with this pattern and how this cupcake was designed. The pink frosting part involves using a magic ring, but rather than working continuously around the circle, you turn your work in order to achieve this semi-circle shape. The pink edging hanging over the green cake liner adds a pretty and whimsical touch. My favourite part though was achieving the cabled effect on the green cake liner by working front post half triple crochets (FPhtr) around stitches found in rows below. I thought this technique was brilliant and I love how it turned out- I'll have to keep this in mind for future projects!
The original project includes the pattern for a circular cherry with a loop on the top so that you can easily hang your dishcloth. I wanted to make this dishcloth convertible into a bib as I wanted to gift it to a newborn baby girl! Thus, I did not include the loop on the cherry- instead, I crocheted a little stem.
After following the pattern for the cherry, I did not fasten off. I did the folllowing:
Ch 6. Sc 1 in 2nd chain from hook. Sl st in next 4 chains. Sl st in next 2 stitches of circle. Fasten off and leave end to attach cherry to cupcake.
In order to make this cupcake convertible into a bib, I added these two straps to the back of the pink frosting so that I could run a long neck strap through them:
To crochet these:
Ch 7. Sc in 2nd ch from hook and in each chain across (6 sc). Fasten off and leave ends to attach straps to frosting.
Next I crocheted the long neck strap consisting of double crochets with a button on the end. By using double crochets, this made the strap adjustable since the button can fit between any of the stitches!
To crochet the neck strap:
Chain 70. Dc in 4th ch from hook and in each chain across (68 dc). Fasten off and weave in ends. Sew button firmly onto one end. (My strap measured approximately 17 inches).
After feeding the neck strap through the pink straps, this is what my cupcake bib looked like! I thought that the family could use it at first as a bib, and when their baby daughter no longer needed to use a bib, they could remove the neck strap and continue using it as a cute dishcloth in their kitchen!
Cupcakes are so pretty and whimsical- I'm sure a Cupcake Dischcloth or Bib would be a welcome addition into many homes and kitchens, especially for those with a sweet tooth!
Myla absolutely detests wearing bibs now, but we managed to get her to wear this Cupcake Bib for a split second to capture this photo before she ripped it off, haha! Isn't the bib adorable?
To make your own Cupcake Bib or Dishcloth, check out Twinkie Chan's free pattern HERE! Her post also includes a very informative YouTube video in which she shows you how to crochet the entire project as well :) Have fun, and happy crocheting!
Sneak peek of upcoming blog post: Non-Slip Soles with Plasti Dip (Rubber Spray Coating)
One of the things I love about my passion for crochet is being able to make beautiful, unique items for my little girl that cannot be purchased in stores and are handcrafted with a lot of love! For Myla's 1st birthday, she was gifted with a pair of Padraig boots (see here if you've never seen them before) from some dear friends: these boots were crocheted with New Zealand wool, lined with sheepskin and had leather soles! Myla wore them for the next couple of months and they were great as they were warm and provided great grip as she learned how to walk around. You can see Myla wearing them in this photo I posted to Instagram below (don't you love our matching parkas?)! As soon as Ryan and I laid eyes on these Padraigs, we knew we wanted to try and crochet Myla a pair of boots with a leather or suede sole that would be functional for our walking toddler (see my previous baby boots here).
As I was looking up patterns on different sites, I came across "Two Girls Patterns" on Etsy and absolutely fell in love with their designs! Kris and Lorin have so many patterns for cute and modern slippers, boots and hats, and I thought their "Furrylicious/Little Diva Boots" in particular really stood out! These boots are crocheted using the loop stitch which gives a beautiful and unique texture to the boots. I was very excited to get my hands on the pattern, and if you visit their Etsy store, you will see it being sold for $5.50 USD (you get a discount if you buy multiple patterns at the same time, and the pattern is also available for babies, toddlers, and even adults!). I knew it would be a great pattern because their store has rave reviews with everyone saying that their patterns are easy to follow and detailed with clear pictures!
The toddler version includes sizes 4-9 (you get all the sizes when you purchase the pattern), and I opted for a size 4 for Myla. Their pattern very clearly states all the materials needed, instructions on how to work the loop stitch and some notes that are very important to read before starting the project. For example, this boot is made by holding two strands of yarn at the same time! I started by crocheting the sole using a tan colour.
Next, I started crocheting the upper shoe with a white yarn (I used "Patons Canadiana" in "Winter White").
Then the fun part began: the loop stitches! It was my first time doing the loop stitch, and I LOVED doing it! See this great tutorial and video that Fresh Stitches put together HERE that details how to do the loop stitch.
The loops are formed by wrapping the yarn around your finger! It's important to draw both strands of the looped yarn through the stitch as just drawing through one strand will not work. For some reason when I began crocheting the loop stitches, I was doing them incorrectly by swinging my hook in the wrong direction- the loops seemed okay at first but as I continued moving on, the loops kept pulling inwards toward the centre of the boot and thus getting smaller. Thankfully, I noticed my mistake, undid my work, examined the instructions carefully again and continued onwards. Once I started doing the loop stitch correctly, they looked great! I need to figure out how to incorporate loop stitches in future projects as the results look so textured and beautiful!
Next, the upper boot is worked up as you add more and more loop stitches! I really love the look of the overlapping and cascading loops!
The boots are designed so that buttons can be sewn on one edge while there are button holes on the opposing and overlapping edge. The buttons give such a cute look to the boots!
Finally, my loop boots were complete! I was so happy with how they turned out, and the pattern was very easy to follow and understand. I love how Kris and Lorin laid out the directions very clearly, and they always offer support for their patterns if you need it and are more than happy to help :) These boots are very well-designed and I really admire designers who can think out patterns such as these (I myself find designing boots and shoes daunting, especially since the shape and sizing is so important!). This pattern is well worth the money, particularly since it includes the pattern for so many sizes…I can keep crocheting boots for Myla until she reaches size 9!
Here are Myla's boots from the bottom! We let Myla wear them on carpeted surfaces such as our church sanctuary, but she would be slipping and sliding all over the place if we let her wear them on a hardwood or tile floor. Thus, I looked up many tutorials, videos and posts about how to make crocheted slippers non-slip. Moogly has a great post on "7 Great Ways to Make Slippers Non-Slip"- some of these ways include adding fabric paint or silicone sealant. One method that I was particularly interested in was using a rubber spray called "Plasti Dip" which would apparently make the sole rubbery (see video HERE). [UPDATE: I tried using "Plasti Dip" on another pair of boots and it worked very well- see the full blog post HERE!]
However, we really wanted to try using leather/suede for the soles as we loved the luxurious and very functional look of Myla's Padraigs. And so, we purchased some scrap suede and excitedly began Myla's Loop Boots, version 2.0! I crocheted a sole using some scrap yarn following the pattern for a size 4.5 boot so that Myla would have a little more room to grow into them. We then traced the sole onto the suede and made tick marks at every stitch with a pen so that we knew where to add holes (e.g. if you have 42 stitches in the last round of the sole, you should have 42 tick marks around the suede!). We then cut out the suede sole and punctured the holes around with a utility knife.
Here is a more detailed picture showing how we measured the suede sole. We knew we had to account for the fact that the stitches crocheted into the suede would pull upwards so we cut the suede sole a little bit bigger than the actual size of the crocheted sole. The inner edge is the actual size of the crocheted sole, and we added 0.5 cm all around for our suede sole. The slits were made close to the inner edge. It was somewhat difficult wiggling my crochet hook into the slits when crocheting around but it was definitely possible and I was so excited to start the upper boot!
We ended up using the same white Patons yarn as we loved how it looked (Sidenote: After multiple wears, Myla's boots have pilled and fuzzed up a bit. You could experiment with different yarns in case you don't want them to fuzz up as much!). In the end, I was able to crochet two pairs of loop boots with two skeins of the white yarn! After completing the first round of the upper shoe, this is what we had! We loved how it was looking already :)
You could add some faux fur or fur to the bottom of the boot for some added warmth and comfort! We glued the fur to the suede and then I continued crocheting the upper shoe.
After following the exact same pattern from here on in, these were our finished boots! We decided to go for some pretty gold buttons for this pair! Aren't they beautiful?
Here is a picture showing the difference between the crocheted yarn sole and the suede sole!
I was incredibly excited to have Myla try them on and walk around our hardwood floor! Much to my delight, she walked around with no problem at all….no slipping or sliding as the suede sole provided her with plenty of grip!
She was pretty happy to wear them too! I love her sweet smile :)
The shaggy, loopy look of the boots are absolutely adorable! She always gets compliments whenever she wears them, and I can't help but smile when people ask where I bought them and I get to say that I made them :) I never would have imagined that I would be able to crochet my daughter such functional, luxurious, and stylish boots a few years ago, and it's amazing having her wear something I crocheted for her with so much love!
We used to take monthly family photoshoots up until Myla turned 1, so it was interesting trying to plan this shoot since Myla can walk so well now! Gone are the non-mobile days when she would stay wherever we plopped her down! And so, we did some of our favourite activities, like playing with bubbles!
We also did some reading (love the beautiful "Little Miss Austen" books)!
And some fun puzzles :)
If you're interested in the beautiful prints that we're wearing, check out Vonbon, a children's line based in Vancouver, Canada. They specialize in organic cotton items (e.g. cowls, leggings, blankets, hats, bib bandanas, and headbands) that are all designed and handmade in Canada with gorgeous, sophisticated colour palettes. I've had the pleasure of connecting with Vonbon's creator Jen (who started the company with her sister Kristin) and it's been wonderful getting to know another handmade artisan who is so passionate about her craft and what she does!
[On Myla: Polkadoto shirt: H&M, Gray Antler Leggings & Blush Triangle Infinity Cowl: Vonbon. On me: Cape: Aritzia, Leggings: American Eagle Outfitters, Gray Antler Cowl: Vonbon]
We had to include this hilarious picture of Myla posing by the wall as I was blowing bubbles- she is a born model, haha :) Myla photobombed our last photoshoot for the "Cabled Wrist Warmers" but this time she had the whole stage to herself!
I hope you enjoyed reading about our adventures in making these boots and also learned about some options on how to make your own crocheted slippers or boots non-slip by adding a suede sole! I really enjoyed crocheting them and am so delighted with how they turned out! You can purchase the toddler pattern for these loop boots HERE.
Kris and Lorin of "Two Girls Patterns" have partnered with me to offer a GIVEAWAY [now CLOSED- congrats "Pinkrebunny"!]! One of my readers will win a FREE pattern from their lovely shop! There are two ways to enter: please visit their Etsy store HERE and browse through their patterns. Then, leave a comment below on my blog and/or on my Facebook page here (must be a follower of "All About Ami") stating which pattern you would most like to win! I'd love to hear what you think about our boots too and if you've tried making your crocheted footwear non-slip! This contest is open worldwide and will close on Sunday, January 26th at 8 PM, MST. If you are under 18, please ask your parents' permission before entering. Also, in case anyone is interested, Kris and Lorin allow people to sell their finished products made from their patterns as long as credit for the original design is given to them in the listing! If you are interested in purchasing completed loop boots for your own child or as gifts, you can check Etsy as I've seen them being sold there! Thank you for reading, and happy browsing and crocheting!
Congratulations to Dominique who is the big WINNER of my 3 Year Blogiversary Giveaway! Thank you so much to everyone who scoured the archives of my blog and participated- it's wonderful to hear that you enjoyed the hunt, read some of my old posts, and discovered some new projects and pages along the way! I really appreciate everyone's kind e-mails filled with so much encouragement and support :)
In case you were wondering, here are the answers to the giveaway questions:
1) What was my very first original amigurumi design? Chinese New Year Doll ("Jigglypuff" was the first amigurumi I blogged about it, but I was following Wolfdreamer's pattern. "Cupcake Bear" was modeled after "Amigurumi Kingdom's" work and I never blogged about the pattern. "Chinese New Year Doll" was the first amigurumi we designed from scratch as we made a sketch of her, figured out her parts and wrote and released the full pattern for her. It's listed as my first original amigurumi creation under my "Patterns" page!)
(2) What was the title of my very first blog post? "And so it begins…"
(3) About how old was I when I first started crocheting? 10 years old
(4) What size crochet hook do I like to use for most of my amigurumi? 2 mm
(5) In the "Amigurumi & Crochet Blog Directory" that I compiled, how many blogs are from South America? Seven
BONUS: What is my favourite video game? The Legend of Zelda: Ocarina of Time (I loved making my "Link" amigurumi and designing his Hylian shield, and I stated that this was my favourite game in the "Animethon 2013" post!)
Many people answered all of the above questions correctly including the bonus- thank you so much for following and supporting my blog, and for being so attentive! Congrats again to Dominique and stay tuned this week for another giveaway and a project that I had a lot of fun working on!
This week I am celebrating my 3 Year Blogiversary! I can't believe it's been three years since I wrote my first blog post, and as each year goes by, it continues to amaze me that I have this outlet to share my creativity and crochet projects with you all! Some of the highlights from this past year include being featured in the premiere issue of "Simply Crochet" magazine, and winning 1st place in the "Design/Home/DIY/Craft" category of the Canadian "2013 Made in Blog Awards"! I also really enjoyed putting together the "Amigurumi & Crochet Blog Directory" where I learned about so many fellow crochet artists around the world!
Thank you to my readers who have followed and supported me throughout the years, and welcome to my new readers as well! It always warms my heart and brings a smile to my face every time I receive an encouraging comment or e-mail, and it is my honour that I have provided some inspiration on your crocheting and crafting journeys!
330 posts, 7780 Facebook fans, 970 Twitter followers, 2804 Instagram followers and 10 780 Tumblr followers later, here we are! To thank all of you for your support, we are hosting a BIG GIVEAWAY! I have been collecting items throughout the year that I have loved, and one lucky person will WIN THEM ALL! I purchased all of the items in this BIG PRIZE which include:
(1) Mikaylove Double Wrap Bracelet in Olive (read about my Mikaylove jewelry here)
(2) "Keep Calm and Carry Yarn" pendant and necklace by "Pieces of Me Pendants" (read about it here)
(3) 2.75 mm Clover Amour Crochet Hook (read about my hooks here)
(4) Big Dark Brown Wood Button by AnnyMayCraftSupplies [2" or 50 mm] (perfect for crocheted cowls and similar to the one I used here)
(5) Clover Stitch Markers (see mine here)
In order to win this big prize, you will need to answer the questions below correctly by going through the Archive and different pages of my blog! I will make a list of people who have answered all the questions correctly and randomly draw a winner from that list. Below are the questions:
(1) What was my very first original amigurumi design?
(2) What was the title of my very first blog post?
(3) About how old was I when I first started crocheting?
(4) What size crochet hook do I like to use for most of my amigurumi?
(5) In the "Amigurumi & Crochet Blog Directory" that I compiled, how many blogs are from South America?
BONUS: What is my favourite video game? [Your name will be entered twice if you get all of the above questions correct as well as the bonus!]
Please E-MAIL me your answers by sending an e-mail to {email@example.com} with the subject heading "3 Year Giveaway Answers". Do NOT write your answers in the comments below since everyone will be able to see them! If you would like, you can leave a comment below saying that you have entered the contest after you send your e-mail so that I can verify that I have received your response in case some e-mails end up in my junk folder!
This contest is open worldwide and will close on Sunday, January 19th at 8 PM, MST. If you are under 18, please ask your parents' permission before entering. Check back on Monday, January 20th to see who the winner is and what the correct answers are! Good luck, and I can't wait to receive your responses and choose a winner!
[NOTE: This giveaway is now CLOSED! Congrats to Dominique who is our big winner!]
My mom recently celebrated her birthday, and I wanted to crochet her a buttoned cowl as a part of her gift! It is so special crocheting items for loved ones, knowing that they will wear them and always think of you when they do :) You might recall that I crocheted a Puff Stitch Scarf for my mom two years ago as well! Scarves and cowls have been a must recently during our cold Canadian winters as the temperatures have been dipping extremely low and any exposed skin could result in frostbite!
I had just recently crocheted my favourite baby hat, the "Shell Stitch Beanie" for a newborn when it occurred to me that using the shell stitch would be a great idea for a cowl! I LOVE doing the shell stitch, and the result is always beautiful. Thus, I excitedly began and crocheted a series of chain stitches, estimating how long I wanted my mom's cowl to be. Then I started doing the shell stitch across!
I wanted this cowl to be folded around the neck and secured with a button, so instead of crocheting in a circle in rounds, I crocheted it row by row, turning at the end of each row.
It is important to note when following the pattern that each shell stitch is worked in the Chain 1 space from the previous row below, NOT the space between the shell stitches.
This results in a beautiful pattern in which the shell stitches are stacked upon one another rather than being staggered across the rows.
The edges also have a pretty scalloped design!
For this particular cowl I crocheted 6 rows of these shell stitches. I then sewed on a very special button that we picked up from the Halifax Farmer's Market!
I also crocheted a cowl for a friend in this beautiful green colour and added a brown button from the same Farmer's Market! I love "Loops & Threads Cozy Wool" as it is so incredibly soft. My mom's cowl is in "Pewter" and the green one is called "Spearmint". I used one ball of yarn for each!
I snapped a quick photo of the spearmint cowl before it went off to its new owner!
This is my mom's finished cowl!
Here is the pattern that I made for this cowl:
Buttoned Chunky Shell Stitch Cowl (worked in rows)
Using a 10 mm crochet hook,
Chain 48
Row 1: In fourth chain from hook, dc (initial chains count as first dc), ch 1, 2 dc in same stitch. *Skip 3 ch, (2 dc, ch 1, 2 dc) in next ch* repeat from * to end (12 shells [each shell made of total 4 dc and ch 1])
Rows 2-6: Chain 3, turn. *2 dc, ch 1, 2 dc* in first chain 1 space. *2 dc, ch 1, 2 dc* in each ch 1 space till end (12 shells).
Finish off and weave in ends. Attach button towards left side of cowl (see pics above). Be sure to wear the cowl with the scallopped edges facing upwards!
[Finished cowl is 7" in height and 29" in width, using one skein of "Loops & Threads Cozy Wool"]
Here is my beautiful mom wearing her new buttoned cowl! She loved it as soon as she opened it! She particularly likes how soft the yarn is and how she can put the button through any hole of this cowl. It's also easy to wear since you don't have to pull the cowl over your head which can result in staticky hair!
I wanted to make a REALLY chunky buttoned shell stitch cowl for myself using some interesting yarn that Ryan found called "Patons Cobbles" at Michaels! The way that the yarn was segmented into little chunks looked really neat and we were curious how it would look in a crocheted piece. We bought a beautiful brown colour called "Moon Rock" (pictured below) and a gorgeous yellow colour called "Mustard Seed".
I decided to use the "Mustard Seed" colour for my cowl since I wanted to use this big, beautiful wooden button that we picked up in a cute little craft boutique in Paris two years ago. I think it's so neat when we buy buttons on our travels as each button reminds me of our special adventures. I love being able to use them in my crocheted pieces, and I had been waiting a long time to use this amazing find :) The brown button contrasts so nicely against the mustard cowl!
Isn't the texture of this cowl absolutely stunning? I love the unique look that the "Patons Cobbles" gives!
When worn under a coat, the cowl gives a very beautiful collared effect! It also helps keep my neck very warm too :) What a great way to be warm and stylish at the same time! It certainly is a statement piece that can help spice up any outfit! With the recent frigid temperatures, we dared not take any outside photos for this shoot- thank goodness we managed to snap some snowy photos when the temperature was still manageable with the Ribbed Pom Pom Beanie a couple weeks ago!
For this cowl, I used a 10 mm crochet hook and chained 56 initially, resulting in 14 shells. Using two skeins of this yarn allowed me to do 5 rows. This cowl was 7" in height and 40" across.
{Dress: Urban Outfitters, Sweater: Roxy, Jacket: Zara, Bracelet: Mikaylove, Buttoned Shell Stitch Cowl: Me!}
I crocheted another buttoned cowl for a friend using "Lion Brand's Wool-Ease Thick & Quick Yarn" in "Raspberry" (the same yarn I used for my "Long Double Crochet Cowl" from last year). We chose a beautiful gold button to contrast against the pink yarn. For this cowl I also chained 56 in the beginning, resulting in 14 shells. With one skein of yarn I could make 7 rows (dimensions: 8.5" in height, 32" across).
I crocheted a matching toddler cowl for my friend's daughter too! For this cowl I used an 8 mm crochet hook and chained 48 initially, resulting in 12 shells and 4 rows (dimensions: 4.5" in height, 24" across). I found a smaller gold button to match with her mom's too!
Of course I had to make Myla a toddler cowl too! Here we have three generations wearing the "Buttoned Shell Stitch Cowls" that I crocheted, each in varying sizes! Don't we all look so cozy and warm?
I hope you enjoyed reading about all the "Buttoned Shell Stitch Cowls" that I crocheted! Once you know how the basic pattern works, you can easily adapt this pattern to make your cowls various sizes and lengths (add or decrease 4 chains at the beginning to increase or decrease number of shell stitches). This pattern is so versatile as using different yarns and different buttons helps give the cowls different looks, and they can be quite the statement piece! These cowls also work up very quickly which is usually the case when working with chunky yarn and a large crochet hook! The shell stitches give such an elegant, pretty, and romantic look to the cowls, wouldn't you agree?
I also designed a "Round Shell Stitch Cowl" that is worked in rounds instead of rows and does not include a button. See the step-by-step tutorial and free pattern HERE!
For some more cowl options, be sure to check out my "Chunky Double Crochet Cowl" and "Long Double Crochet Cowl" from last year too!
WIll you be making any of these cowls? What yarn are you going to use? They would make lovely Christmas gifts! Let me know what you think about them in the comments below, and don't forget to show me your finished pieces on my Facebook page, Twitter and Instagram (@AllAboutAmi, #AllAboutAmi)! Happy crocheting and stay warm, everyone ❤
Amazon affiliate links:
Spinrite Cobbles Yarn, Mustard Seed
Sneak peek of upcoming blog post & free pattern: Buttoned Shell Stitch Cowl
Remember those grey infant button boots I crocheted more than a year ago when I was pregnant? Well I am one proud Mama because our little sweetheart Myla can wear (and walk!) in them now! I still remember crocheting them and wondering what our baby would be like, and they seemed sooo big at the time (especially compared to the gold baby boots I had just finished)!
Doesn't Myla look super cute and stylish in them? It's so special being able to make these items for Myla and I am SO GLAD I crocheted bigger items for her to grow into as well since I knew how busy I would probably be after she arrived! Check out my step-by-step blog post for these boots HERE and the free pattern HERE!

subset: commoncrawl


text:
Tonight OnTV is the season premiere of acclaimed HBO drama series "The Newsroom." Set a year later, and in the days leading up to election night 2012, the "News Night" staff is being prepared to give depositions in a lawsuit — the circumstances of which unfold throughout the season. A mysterious tip has led to the airing of a story with consequences no one could have anticipated.
Will (Jeff Daniels) and the "News Night" staff are questioned by their lawyer about a story they've aired that's become a network crisis. An on-air remark by Will has him pulled from 9/11 anniversary coverage. Jim (John Gallagher, Jr.) volunteers to cover for an embed reporter on the Romney campaign and Neal (Dev Patel) investigates the beginnings of Occupy Wall Street.
In case you miss the episode entitled "First Thing We Do, Let's Kill All the Lawyers", HBO has scheduled playdates as follows:
Debut: Sunday, July 14 (10:00-11:00 p.m. ET/PT)
Teleplay by Aaron Sorkin; story by Ian Reichbach and Aaron Sorkin; directed by Alan Poul. This is the 11th episode of "The Newsroom."
Preceding the season premiere of "The Newsroom" is episode five of "True Blood's" current sixth season, which premiered last month on the network, entitled "**** the Pain Away."
Seeking more answers about her past, Sookie (Anna Paquin) enlists Lafayette (Nelsan Ellis) to summon her dead parents. Meanwhile, Eric (Alexander Skarsgård) and Tara (Rutina Wesley) resort to drastic measures when Pam (Kristin Bauer van Straten) finds herself in dangerous territory. Sarah Newlin (Anna Camp) reconnects with Jason (Ryan Kwanten) as Jessica (Deborah Ann Woll) seeks atonement.
Debut: Sunday, July 14 (9:00-10:00 p.m. ET/PT)
Written by Angela Robinson; directed by Michael Ruscio. This is the 65th episode of "True Blood."


text:
Date: 6 years ago
Runtime: 2:44
Views: 11,064
Sugar Mamas
Do you like huge boobs,thick thighs and bubble butts? Are you tired of sites full of skinny ass girl? Well you're in luck! We happen to meet all these big and beautiful babes who love nothing more then to let you stick your dick in their plump, wet, and juicy pussies! We got it all on video!!
interracial, hardcore, bbw
Categories: Hardcore, Interracial, BBW
All Comments
Mmmmmmmmmm I love it when a guy grabs my tits when he is slamming his cock in me from behind. I love it when he squeezes on my nipples and slaps my fat ass.
this small pecker is clearly getting lost in her


text:
Return to White Hound fan-fiction
This multi-part essay, nine years in the making as at 2014 and still not entirely complete, is divided into the following sections, which should ideally be read in the order they are listed below:
an examination of JK Rowling's own map of Hogwarts; an explanation of the basis for this essay, including how the distances were worked out; and references.
whereabouts in Britain is Hogwarts?
the basic compass-orientation of the castle and grounds and of the mountains around them. These two things are intimately linked, since most of what we know about the castle's orientation is derived from the timing and position on the horizon of sunrise and sunset, which in turn will be influenced by the presence and height of mountains on the horizon.
The school grounds:
what we know about the scale and layout of the castle grounds; a suggested plan which fits everything which we are told in the books, whilst remaining reasonably close to JK Rowling's own sketch.
Hogwarts Castle:
an overview of what we know about the style and layout of the castle, and one possible ground-plan which would fit what we know. Floor-by-floor plans and the locations of the numerous staircases have still to be worked out.
what we know or can surmise about the scale, position and layout of Hogsmeade village.
The Forbidden Forest:
the scale of the Forest, and a suggested chart showing the probable locations of Acromantulas, Thestrals etc..
Routes around the castle:
shows possible locations and routes for various events which took place in Hogwarts castle during the course of the books, using the approximate, possible floor-plan worked out in the castle section. This section is under construction, pending completion of the individual floor-by-floor castle plans, and will probably be ready round about 2016.
Journeys around the grounds:
shows possible locations and routes for various events which took place in the grounds of Hogwarts during the course of the books, using the fairly definite map worked out in the grounds section.


text:
"He had the sort of face that makes you realize God does have a sense of humor.
Find a translation for this quote in other languages:
Select another language:
Discuss this Bill Bryson quote with the community:
Use the citation below to add this quote to your bibliography:
"Bill Bryson Quotes." Quotes.net. STANDS4 LLC, 2014. Web. 25 Oct. 2014. <http://www.quotes.net/quote/11369>.


text:
Apr 19
The Arrested Dead
Now the story of a group of survivors who lost everything and the one cop who had no choice but to keep them all together.
It's The Arrested Dead.
Follow on twitter @thearresteddead
- c-staples likes this
- kachinaa likes this
- fiiaa likes this
- thefantasticalwonderwench likes this
- jamierosaurus likes this
- noonesgoingtotopthat likes this
- Chris submitted this to thearresteddead


text:
This contains the explanation to the code of the boot.s file that was used to build the Hello World Operating system.
The most important part is to create is the multiboot header, as it must be very early in the kernel binary, or the bootloader will fail to recognize us. 720 more words


text:
Alexandria, VAUSA 22308
December 3, 2012
No answer yet
No answer yet
No answer yet
No introduction yet
Glad you joined the 30s and 40s Going Out Group Charles! Hope to see you at the Santa Club ambush Saturday, December 15th!
Charles, it has been made very clear that you must post a photo without the sunglasses (or a hat or anyone else in the pic with you and it must be a close up like you have now) in order to participate in our activities. Thank you.
Meetup members, Log in
By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy


text:
Wash the sweet potato thoroughly before grating it with a box grater, food processor, or mandolin.
Place a skillet on the stove at medium-high heat.
Placed the grated sweet potato in a mixing bowl and add the Parmesan, orange zest, flour, salt, and pepper. Use a fork to gently toss together. Form four patties with the mixture.
Generously mist the hot skillet with olive oil cooking spray before placing each sweet potato hash brown patty.
Let brown about 3-5 minutes, then turn. Cook for another 3-5 minutes until desired crispness is achieved. Serve and enjoy.
Photos by Kacy Meinecke


text:
43-Story Skyscraper Planned In Downtown Seattle
January 23, 2013 9:48 AM
Get Breaking News First
Receive News, Politics, and Entertainment Headlines Each Morning.Sign Up
SEATTLE (AP) — Developers say they'll break ground this fall on a 43-story office tower in downtown Seattle.
The Seattle Times reports the 660-foot Fifth and Columbia Tower would be the fourth-tallest skyscraper in the city and the tallest building erected in more than 20 years inSeattle.
Daniels Development and Stockbridge Capital Partners of San Francisco obtained permits for the tower in 2008, but put the project on hold in the recession.
Copyright 2013 The Associated Press.


text:
Virasat in Encyclopedia in Encyclopedia. ... Thereafter, his creative urges led him into theater at the college and university levels. .... Yehii To Haii Woh Star One br Kohinoor TV series Kohinoor Sahara one br Viraasat STAR One Virasat Star ...
Virasaat (Sahara One)
Virasaat is a Hindi-language television series that aired on Sahara TV which is now known as Sahara One in 2002. The series aired every Monday - Friday at 8:30pm IST. The series portrays common themes of intrigues, jealousies, feuds, and petty quarrels, unlike many other Indian soap operas.
This is an excerpt from the article Virasaat (Sahara One) from the Wikipedia free encyclopedia. A list of authors is available at Wikipedia.
This is an excerpt from the article Virasaat (Sahara One) from the Wikipedia free encyclopedia. A list of authors is available at Wikipedia.
The article Virasaat (Sahara One) at en.wikipedia.org was accessed 156 times in the last 30 days. (as of: 09/01/2013)
Search results from Google and Bing
Virasat - Wikipedia, the free encyclopedia
Viraasat (STAR One), a drama-series appeared on the Indian satellite television ... Virasaat (Sahara One), a Hindi language serial aired on the Indian satellite ...
Virasat - Indian Television Forum With English SubTitles
Sticky: 26th July --HQ Virasat Final Episode Watch Online. Thread Rating: 6 votes , 5.00 average. D9Rani. 08-21-2007 10:05 PM by hassanthedon · Go to last ...
Virasat - Rediff Pages
Virasat is on Rediff pages, ,Follow Virasat to get latest updates from Virasat. ... television network Sahara One · Virasat , a television serial that aired on DD ...
Virasat Online Drama Episode 9 - 12nd April 2013 - TV Drama Serials
Apr 13, 2013 ... Virasat Online Drama Episode 9 - 12nd April 2013. ... Hona Tha Piyar Drama Episode 2 – 23rd May 2013 On Tv One Global. Added by Mariya ...
Virasat Drama Episode 11 - 19th April 2013 By Geo Tv
Apr 19, 2013 ... Virasat Drama Episode 14 – 11th May 2013 On Geo Tv. Added by ... Virasat Episode 12 – 27th April 2013 Online Drama On Geo Tv. Added by ...
Virasat Episode 12 - 26th April 2013 On Geo Tv - TV Drama Serials
Apr 26, 2013 ... Virasat Episode 12 - 26th April 2013 On Geo Tv. ... Hona Tha Piyar Drama Episode 2 – 23rd May 2013 On Tv One Global. Added by Mariya ...
Virasat in Encyclopedia
Yehii To Haii Woh Star One br Kohinoor TV series Kohinoor Sahara one br Viraasat STAR One Virasat Star Plus Star One br Kuch Apne Kuch Paraye Sahara ...
Virasat - Wikipeetia, the misspelled encyclopedia
''Virasat'' (Ze TV), a sirial taht aierd on teh Endian satalite television network Ze TV iin late 1990s. * ''Virasaat'' (Sahara One), a Hendi laguage sirial aierd on teh ...
Ankur Nayyar enters serial Virasat! | 589759 - India Forums
I have e-mailed sahara one to find out what's going on...lets see if they answer Angry Hopefully I will be able to figure out the story of Virasat ...
Virasat -1997- SHEMAROO DVD
Virasat bollywood DVD Director Priyadarshan Music Anu Malik Starring Anil Kapoor Tabu Pooja Bartra Amrish Puri Virasat the dynasty is a story of.
Search results for "Virasaat (Sahara One)"
Google: approx. 17.900
Virasaat (Sahara One) in science
Virasat in Encyclopedia
Alva's Virasat from Jan 10 - Deccan Herald
Dec 28, 2012 ... The four-day 'Alva's Virasat,' festival of music and dance, will begin at Shobhavana in Moodbidri from January 10.
Alva's Virasat from January 6 - Deccan Herald
Alva's Virasat 2009, the national cultural festival, will be held from January 6 to 10 ... Nitte University Chancellor N Vinay Hegde, New Medical Centre Managing ...
Kumar Bansal - LinkedIn
School, Chennai, University of Madras; Summary: More than six years of .... College, Mumbai, St Xaviers School ,Jaipur; Summary: Director Virasat Experiences An ... Current: smoke artist at sahara one media ent ltd; Past: sunil bansal at ...
Kumar bansal - India
School, Chennai, University of Madras; Summary: More than six years of ... College, Mumbai, St Xaviers School ,Jaipur; Summary: Director Virasat Experiences An ... Current: smoke artist at sahara one media ent ltd; Past: sunil bansal at ...
Jan 6, 2010 ... Such cultural fests will help in knowing other cultures as well. It is a kind of celebration around the country and enables one to mingle with all in ...
Ganeshkhind Road, Model Colony - Virasat Pune
Jan 31, 2013 ... The area initially grew around the Pune University and the Polytechnic College, ... Rahul Cineplex on Ganeshkhind Road is one of the older cinemas halls in the city. ... Road; and on Senapati Bapat Road near Hotel Sahara.
Sandeep Das - Wikipedia, the free encyclopedia
Nominated twice for the Grammy Award (2005, 2009), he is considered one of ... He is a Gold Medalist in English Literature from Banaras Hindu University. .... Virasat, with Ustad Shujaat Khan, Recorded Live at Saptak festival, ... Sahara Time.
Virasat Mela off to colourful start in city - The Tribune
Nov 24, 2012 ... The Punjab Academy of Science, Punjabi University, Patiala, conducted .... Volunteers of Sahara Jan Sewa, who rushed the accident victims to the ... In another accident that took place on the Bhagu road, one Yashpal Singh ...
Haridwar Hotels Best Hotels in Haridwar, Haridwar Hotels Resorts ...
Universities in Uttarakhand Schools in Nainital Schools in ...
Books on the term Virasaat (Sahara One)
Rashtriya Sahara
The character of Chotte Thakur in Virasat will continue to haunt the minds of movie-goers for a long time to come.. Lajja Shankar, Jagira and ... One day while browsing through the Khalnayaks Rana's entry into films was accidental. In fact, all ...
Dictionary of Food: International Food and Cooking Terms from A to Z
The Dictionary of Food covers a wide range of ingredients, classical dishes and cooking processes, equipment and terms from a variety of different countries within Europe, America, South America, Australasia, Africa and Asia.
The Jungle Books
"The Jungle Books", which includes Rudyard Kipling's "The Jungle Book" and "The Second Jungle Book" is a classic collection of fables with animal characters used to teach moral lessons.
Blue Ocean Strategy: How to Create Uncontested Market Space and ...
This landmark work upends traditional thinking about strategy, and explains how to create uncontested market space and make the competition irrelevant while charting a new path to capture new market space that is ripe for growth.
Tehelka As Metaphor: Prism Me a Lie Tell Me a Truth
With exhaustive personal interviews, this is a must-read for anybody who wants to understand modern India - or even better, modern international journalism.
Development of Google searches
Blog posts on the term
Virasaat (Sahara One)
Virasaat (Sahara One)
Lavasa Women's Drive
Lavasa Women's Drive Virasat February 22, 2013 News Times of India: Around 700 women from Pune will participate in the fifth edition of Lavasa Women's Drive scheduled on February 24. The participants attended a briefing session on Tuesday as part of the Lavasa Women's Drive (LWD) – the country's biggest women's car rally, as certified by the Limca Book of Records.virasatjanwani.thepunekar.com/lavasa-womens-drive/
Virasat Episode 6 - NoorHDTV
Pakistani Drama Episodes,Dunya TV Pakistan Live TV Channels Watch Online Pakistani Samaa, Geo, Express News TV Channels including Free Live Online Pakistani TV Channels with Live Streaming on NoorHDTV.comwww.noorhdtv.com/2013/03/virasat-episode-6.html
JUHI PARMAR:Now the winner of BIG BOSS SEASON-5 | Hit Latest 2013
JUHI PARMAR:NOW THE WINNER OF BIG BOSS SEASON-5 was born on 14th December 1980 in Ujjain.Her father Devendra Parmar and mother Hemlata Parmar make their daughter brought up her inwww.hitlatest.com/juhi-parmarnow-the-winner-of-big-boss-season-5/
Wiki biography of Juhi Parmar, dance star cum actress, Big Boss 5 contestant
Juhi Parmar, Big Boss 5 contestant or participant, is known for playing lead role in Kum Kum Hindi serial. Read on this Juhi Parmer wiki biography article to know more about the personal life of Juhi Parmar, career details, personal information and more.www.mumbaispider.com/resources/3755-Juhi-Parmar-wiki-biography-Big-Boss-contestant.aspx
More cyclopaedia entries
1. Virasaiva
2. Virasaivism
3. Virasana
4. Virasat
10. Virasat-e-Khalsa
11. Virasat e Khalsa
12. Virasb Vahidi
13. Virasena
14. Virashaiva
15. Virashaivism
17. Virasoro
19. Virasoro algebra
21. Virasoro element
26. Virastyar
27. Virastyuk
29. Virat Kohli
31. Virata
33. Virata Kingdom
34. Virata Parva
35. Viratanagari


text:
Atlantic Blvd & San Pablo Rd N has a Walk Score of 40 out of 100. This location is a Car-Dependent neighborhood so most errands require a car.
This location is in the Atlantic Highlands neighborhood in Jacksonville.
Nearby schools include Alimacani Elementary School and Arlington Elementary School.
The closest grocery stores are Amba Food Mart LLC, The Fresh Market and Publix Super Market at Harbour Place.
Nearby coffee shops include Starbucks, Starbucks and Krispy Kreme Doughnuts. Nearby restaurants include Good Food Company, Aroy Thai Fusion and Wasabi.
Atlantic Blvd & San Pablo Rd N is near Modesky Park, Hellen Cooper Floyd Park and Buck Park.


text:
HoopsHype Nate Robinson rumors
Frank Isola: Word out of Denver is that Nate Robinson has a torn ACL...going for a second opinion. Tough break for a guy who loves to play. Twitter @FisolaNYDN
Denver Nuggets guard Nate Robinson has been ruled out of Friday's game against the Toronto Raptors after an MRI Thursday revealed a sprained anterior cruciate ligament in his left knee. NBA.com
Denver Nuggets guard Nate Robinson has been ruled out of Friday's game against the Toronto Raptors after an MRI Thursday revealed a sprained anterior cruciate ligament in his left knee. Denver reserve set to be evaluated again Friday to determine treatment plan. Robinson, averaging 10.4 points and 2.5 assists in 44 games this season, will be evaluated again Friday to determine a course of treatment. NBA.com
Denver Nuggets guard Nate Robinson and Hall of Fame shooting guard Reggie Miller are two superbly confident players with a basketball in their hands. It's no different when they pick up a ping-pong paddle. Robinson and Miller recently squared off in the Nuggets players' lounge to see who reigned supreme in table tennis. Their match was filmed for a feature on NBA TV's "Inside Stuff." NBA.com
Exactly a week after Nate Robinson made comments about being a "target" of NBA referees — an eternity of time to be punished for mere words — the league fined him $25,000. The fine came as a surprise to his head coach, Brian Shaw. "I was actually surprised today when I got notification that he'd gotten fined," Shaw said Friday. "I know that it's something that we've been working with him on, in terms of, I tell him every game, 'Let me deal with the referees, you just play the game.' "But we know he's a fiery competitor and seems to always have to have the last word." Denver Post
Robinson's technical came at 6:42 in the fourth quarter with the Nuggets up just five points. Carmelo Anthony made the technical free throw but the Knicks missed a 3-point shot on the ensuing possession, so the Nuggets dodged a four-point swing. Robinson smirked when talking about it. "They hate me, they hate me," he said. "I don't know why, but it is what it is. I already know I've got the target on my back, but I'll play through it; I don't care. I really don't. It doesn't bother me none. If I get a call, I get a call. If I don't, I don't. If I get a tech, hopefully it's not in the fourth quarter. Hopefully I don't get any more. But I know I will. It's nothing new for me." Denver Post
Christopher A. Vito: #Sixers' Tony Wroten, the cousin of Nate Robinson, said he'd like to be in next Uncle Drew commercial. Just throwing it out there, @pepsi. Twitter @ChrisVito
Most everything about Nate Robinson is colorful, including his take on why the Bulls didn't re-sign him after a season filled with singular moments. "Why have Nate Robinson when you have D-Rose?" Robinson, now with the Nuggets, said Friday. Chicago Tribune
While opining that a Derrick Rose-Robinson backcourt "would have been scary," the eight-year veteran has been around long enough to understand the Bulls' decision. "It's a business," he said. "Everybody knew I wanted to come back, but they had other things in mind. They signed a great shooter in (Mike) Dunleavy. They got a good rookie (Tony Snell). They've got a great team. "I miss it. I would be lying if I said that I didn't. ... I had a hell of a year and it was a great run." Chicago Tribune
Mike McGraw: Nate Robinson said Boozer bought him some cupcakes to celebrate Nate's return to Chicago. Nate used to bring cupcakes last season. Twitter @McGrawDHBulls
NBA fines Nate Robinson 10K for hitting OKC's Steven Adams from behind and then hitting him in the chest last Tuesday. Twitter @daldridgetnt
If I was in the NFL, I'd probably be at least, like, the first or second DB in the NFL. One, two or three, I'd say, because [Tampa Bay Buccaneers cornerback] Darrelle] Revis is pretty solid, [Arizona Cardinals corner] Patrick Peterson is pretty solid and you got my man Sherman holding it down. It'd be a tough position, but the level that I was playing football at at the time, I was — you know, it was fun for me and it came pretty easy. [...] And I only gave it a year in college, so for me, it'd be pretty scary to think about, you know, my future in football. If I really gave it my all, and stopped focusing on basketball, and gave everything I had on football, I'd probably be one of the best corners the NFL has ever seen. Yahoo! Sports
Taipei Mayor Hau Lung-bin (郝龍斌) yesterday joined visiting NBA star Nate Robinson in learning basic taekwondo techniques, as part of the city's efforts to promote the Summer Universiade it is hosting in 2017. To boost the popularity of taekwondo — a sport in which Taiwan stands a good chance of winning medals — Taipei City's Department of Sports invited Hau and Robinson to don taekwondo outfits, receive instruction from Taiwanese Olympic gold medalist Chu Mu-yen (朱木炎) and perform a few moves with a group of elementary-school students. Taipei Times
Robinson, who is on a five-day trip in Taiwan, described taekwondo as a difficult but beautiful sport, and said he would learn to excel in the sports if given a chance. "If I took a class and learned how to do this I think I would be pretty good because I would challenge myself to be the best at what I do," he said. Taipei Times
In spite of his incredible career accomplishments, only one stands out most to the 5-9 dynamo. Taking fan questions from his Twitter account, Robinson was asked what his most memorable NBA moment was. His answer was probably similar to Bulls fans' favorite Nate Robinson memory. "Blocking @KingJames #holdat," was Robinson's reply to the question. NBC Chicago
The two now will sit in adjacent lockers. It promises to be a spirited setup as the boisterous Robinson interacts with the calm, quiet Chandler. "He laughs and giggles, but other than that, Wilson's a quiet guy," Robinson said. "I'm the total opposite. It's going to work. Opposites attract." NBA.com
One of Nate Robinson's goals this season is to keep Wilson Chandler smiling. He's off to a good start. Chandler was all smiles when he heard that Robinson was signing with the Nuggets last month. The two became good friends while playing for the New York Knicks from 2007-10. "He's one of the most genuine guys in the NBA," Chandler said. "A lot of the stuff in the NBA is about perception. He's just being himself all the time. That's what makes him one of the most genuine people." NBA.com
Any rumor missing? E-mail us at email@example.com.