Logo

Who is talking?

Archive

2014 in review

about 2 years ago | Sanjeev Mishra: Sanjeev Mishra's Blog

The WordPress.com stats helper monkeys prepared a 2014 annual report for this blog. Here’s an excerpt: A New York City subway train holds 1,200 people. This blog was viewed about 7,600 times in 2014. If it were a NYC subway train, it would take about 6 trips to carry that many people. Click here to […]

Dockerize Everything

about 2 years ago | Rocky Jaiswal: Still Learning

One of the most frustrating things to do is to setup software for new projects. Even within the simple Rails ecosystem, one may need to install PostgreSQL, MySQL, MondoDB, Redis, Memcache, ElasticSearch etc. to get a project running. For complicated projects, Vagrant provides some help such that a ...

Zapoorza - A brief overview of English/Western literture

about 2 years ago | Niranjan Sarade: InLoveWithNature

Few days ago, I read a Marathi book written by Achyut Godbole - 'Zapoorza' - A brief introduction to English/Western Literature by terms of walking us through lives of greatest English writers and their literature summary.There are two parts of the book, out of which I read part 1. This book very nicely covers the lives of greatest English writers in brief and interesting stories behind the birth of greatest novels /dramas/ poems.This book includes world class writers such as William Shakespeare, Edgar Allan Poe, Charles Dickens, Fyodor Dostoyevsky, Henrik Ibsen, Leo Tolstoy, Oscar Wilde, George Bernard Shaw, Franz Kafka, Ernest Hemingway,Jean-Paul Sartre and Albert Camus.The 2nd part of the book includes some more famous writers such as Honoré de Balzac,Arthur Conan Doyle, Arthur Miller, Thomas Hardy, etc. to name a few. For a person who wants to touch upon the wide variety of the English/western literature, these books are a really good choice. I am planning to read the 2nd part of this book in near future.Thank you to Achyut Godbole for this excellent work !

"Keep calm and just do it"

about 2 years ago | Nirmal Merchant: Urban Gypsy

“Keep calm and just do it” - Nirmalism

"Good is enemy of Perfect, Perfect is enemy of Done then Good must be friends with Done"

about 2 years ago | Nirmal Merchant: Urban Gypsy

“Good is enemy of Perfect, Perfect is enemy of Done then Good must be friends with Done” - Nirmalism for my fellow BAs, PMs and developers learning Agile

Making huddles more effective!

about 2 years ago | Nirmal Merchant: Urban Gypsy

Having coached 40+ teams, I often find Scrum Masters runs into a situation where their teams finds the huddles extremely boring and a waste of time.  Often the symptoms are the same: The Scrum Masters call each team members name one by one as they give their status. The team members address the three routine questions (What I did yesterday, what I am doing today and if I have any impediments) without sharing anything other than “I was working on fixing Bug X which is resolved, I am working on task Y and no impediments” In some situations I have run into teams where a number of team members just say “I’ve done nothing yesterday, I have nothing to do today and no impediments”. The team members are often reporting to the Scrum Master or to the team member leading the huddle in case the facilitation is being rotated. In other teams, the members share information not related to the story or their work – e.g., baby sitter didn’t arrive on time, had to fix bathroom leak, was called into another meeting.  (There are merits to having team members share this information however, there are better ways to facilitate this than as part of the status). In almost all situations, I have found such teams to benefit from using a virtual task board or a physical Kanban board to anchor and structure their conversation.  The reason why I think this has worked so often is that in Agile the team swarms around a story/task and tries to get it “Done”.  The team is self organizing but it does so around a goal/objective which tactically is a story in progress.  I suggest that the Scrum Master simply assemble the team around such a task board and set the expectation that team members involved in the specific story will provide their status and report any impediments and that the Scrum Master will not call our their names or dictate the order in which they provide their status but will be taking note of the impediments.  This has worked remarkably well.  It puts team members in a narrower context and makes it easy for them to start a conversation.  They don’t have to think too hard about what they were working on as it relates to the specific story/task before them.  I encourage other team members to inquire details if needed for their own tasks or if they anticipate impact on their stories.  Overall, it remains a much lively conversation, there is active collaboration, things get solved and everyone is on the same page. I have read a number of posts on user groups and on blogs of Agile purists that think this way of conducting huddles is falling back on “command and control” style.  My experiments and observations tell me otherwise.  The Scrum Master is simply setting a norm and setting expectations on the agenda.  The team then makes the agenda their own and achieves the desired objectives.  I often insist that the Scrum Master not ask questions that are specific to a story.  If there is an aspect of the story that should have been discussed but has not, I encourage Scrum Masters to ask very broad questions to provoke thinking.  (e.g., Have we covered all aspects of this story or is there more to discuss?).  If the team still does not bring it up, I suggest that the Scrum Master save that for an offline feedback or a 1-on-1 conversation with the concerned team member. If this hasn’t worked for you, I would love to hear from you about your experience and understand your context and details.

Koichi Sasada Encourages Us To Contribute To Ruby

about 2 years ago | Pat Shaughnessy: Pat Shaughnessy

Ruby処理系開発コミュニティは、あなたの挑戦を歓迎する。 The Ruby core community welcomes your challenge. Today I’m happy to post an English translation of a new appendix to Ru

Parsing Jenkins secrets in a shell script

about 2 years ago | Steve Jansen: /* steve jansen */

The Jenkins credentials-binding plugin provides a convenient way to securely store secrets like usernames/passwords in Jenkins. You can even inject these secrets into build steps as environmental variables in a job like this: screenshot of a Jenkins job using the credentials-binding plugin For a username/password pair, the plugin will inject the pair as a single value joined by :. You can split the credentials into their respective parts using bash string manipulation operators like % and #. Assuming you configured the job to inject a variable named CREDENTIALS, you can do: [parsing Jenkins secret credentials with bash]1 2 3 4 5 6 USERNAME=${CREDENTIALS%:*} PASSWORD=${CREDENTIALS#*:} # proof of concept - don't echo this in real life :) echo USERNAME=$USERNAME echo USERNAME=$PASSWORD

Migrating to Jekyll

about 2 years ago | Aishwarya Singhal: Aishwarya Singhal

So finally, I bit the bullet. I have been thinking of migrating my blog to Jekyll for almost 2 years now, never had a true reason. Well now I do, I am free and bored of the themes that Wordpress offers for free. I have been a long time fan of Wordpress, which I believe is still awesome, but I needed more control on how my blog looks and so I moved. Migrating itself was not super hard. There is sufficient help available online, but a quick summary: Get started with [https://help.github.com/articles/using-jekyll-with-pages/] Skip the hello world goodie, create a site instead bundle exec jekyll new bundle exec jekyll build bundle exec jekyll serve Migrate your blogs using ExitWp Migrate comments using Disqus. Read this blog. Use the domain migration tool on Disqus to change the links in the imported comments and get the links right. I basically just did a find and replace in Wordpress exported XML. Modify the SCSS to make your blog look the way you want. Attach Google Analytics to your pages if you like stats. Get yourself a coffee :-) There are three additional benefits of this: The best thing about a Jekyll backed blog is that there is no database involved. It is static content and is super fast in rendering! It is hosted for free on github. And you get to write your blogs in markdown!

Jenkins Job to export Rackspace Cloud DNS Domain As BIND Zone Files

about 2 years ago | Steve Jansen: /* steve jansen */

Rackspace Cloud DNS offeres a great web console, along with a solid API for managing DNS records dynamically from CM tools like Chef. The web UI @ https://mycloud.rackspace.com doesn’t (yet) suppport an action to export your domain(s) to standard BIND format zone files. However, the API does support zone file exports, GET /v1.0/{account}/domains/{domainId}/export. I wanted to create a scheduled Jenkins job to export a domain managed by Cloud DNS to GitHub for both versioning and disaster recovery. One gotcha with the API is it’s asynchronous – you request an export, then periodically poll on the status of the export. The API also has rate limiting. So, the export is a bit more involved than a simple curl call. Based on this Rackspace community support post, I found a great python utility, clouddns.py by Wichert Akkerman. Note: I couldn’t use the https://github.com/rackspace/pyrax official SDK, as I’m on CentOS 6.5 with Python 2.6, and the SDK requires Python 2.7. I also tried the gist by DavidWittman but failed to get it working with the LON region despte following the clouddns README Here’s the basis of the script I used in a Jenkins job to export a domain and subdomains every 15 minutes, alongw with the Git publisher for Jenkins to push the changes back to a GitHub repo. #!/bin/bash # exports DNS records from Rackspace Cloud DNS to text files # Depends on https://github.com/wichert/clouddns/blob/master/src/clouddns.py set -e me=export-zone base_domain= rackspace_region= rackspace_rate_limit_delay=3 script_root=$(cd `dirname "${BASH_SOURCE[0]}"` && pwd) function usage() { cat << EOF Usage: `basename "${BASH_SOURCE[0]}"` [domain] exports a Racksapce Cloud DNS domain and subdomains to zone files" domain - an optional filter for the domain to export, defaults to all EOF exit 1 } [ "$1" == "-?" ] && usage [ "$1" == "--help" ] && usage echo "[$me] verifying Rackspace API credentials ..." if [ -z "$OS_USERNAME" ] || [ -z "$OS_PASSWORD" ]; then echo "[$me] error - missing rackspace credentials - you may need a openrc file" >&2 echo "[$me] see http://docs.rackspace.com/servers/api/v2/cs-gettingstarted/content/section_gs_install_nova.html#d6e1129" >&2 exit 1 fi if echo "$OS_REGION_NAME" | grep -i "LON" >/dev/null 2>&1; then rackspace_region=uk else rackspace_region=us fi echo "[$me] verifying python dependencies ..." if ! python --version >/dev/null 2>&1; then echo "[$me] error - python runtime not found" >&2 echo "[$me] see https://www.python.org/downloads/" >&2 exit 2 fi if ! pip --version >/dev/null 2>&1; then echo "[$me] error - missing python dependency - pip" >&2 echo "[$me] see https://pip.pypa.io/en/latest/installing.html" >&2 exit 2 fi if ! pip install --user isodate >/dev/null; then echo "[$me] error - pip install isodate failed" >&2 exit 3 fi if ! pip install --user requests >/dev/null; then echo "[$me] error - pip install requets failed" >&2 exit 3 fi echo "[$me] downloading wichert/clouddns from GitHub ..." curl -L -o "$script_root/clouddns.py" 'https://raw.githubusercontent.com/wichert/clouddns/master/src/clouddns.py' if [ -z "$1" ]; then base_domain="." else base_domain="$1" fi clouddns_command="python ""$script_root/clouddns.py"" --region ""$rackspace_region"" \ --username ""$OS_USERNAME"" \ --api ""$OS_PASSWORD""" echo "[$me] exporting zone files for $base_domain ..." domain_list=`$clouddns_command list | \ awk '{print $1}' | \ grep "$base_domain" | \ sort` for domain in $domain_list; do echo "[$me] exporting $domain ..." # ignore errors in exporting a subdomain, which can happen due to rate limiting # assume the next run will export the subdomain set +e $clouddns_command export-zone "$domain" > "$domain.txt" set -e # avoid Rackspace API rate limiting errors echo "[$me] sleeping $rackspace_rate_limit_delay seconds ..." sleep $rackspace_rate_limit_delay done exit 0

Matz’s Foreword to Ruby Under a Microscope

about 2 years ago | Pat Shaughnessy: Pat Shaughnessy

A Japanese translation of Ruby Under aMicroscope was published last month. Matz wrote a new foreword to http://patshaughnessy.net/ruby-under-a-micros

Building a simple scraper with Go

about 2 years ago | Rocky Jaiswal: Still Learning

I have been trying to learn Go / Golang lately and find it really exciting. The things that I find really good about Go are - Easy learning curve (with good documentation) Rich standard library Concurrency is not an after-thoug ...

Building a Fanfiction Recommender - II

about 2 years ago | Sidhant Godiwala: Sidhant Godiwala's Blog

In my last post I had started building a fanfiction recommender using collaborative filtering. In this post I’ll work through my solution which you can find here Author Similarity The core of a recommender is the similarity metric, how similar are two authors and how similar are you to them. Since I have sets of stories for each author (and a set of my own favourites), I can use a set distance metric as a measure of similarity. The Jaccard Index is just the the thing. For any two finite sets, the Jaccard Index is the size of the intersection of the sets divided by the size of their union $$ J(A, B) = \frac{| \space A \cap B \space |}{| \space A \cup B \space |} $$ The Jaccard Index lies between 0 and 1, inclusive. 1 when both sets are identical and 0 if they have no elements in common. $$ A = \{ 1, 2, 3 \}, \space B = \{4, 5, 6\}, \space J(A, B) = \frac{0}{6} = 0 $$ $$ A = \{ 1, 2, 3 \}, \space B = \{2, 3, 4\}, \space J(A, B) = \frac{2}{4} = 0.5 $$ $$ A = \{ 1, 2, 3 \}, \space B = \{1, 2, 3\}, \space J(A, B) = \frac{3}{3} = 1 $$ For each author I calculated the Jaccard Index of a set containing their own stories and favourite stories with a set of my favourite stories to get something like the table below. Top 5 authors author name similarity 4976703 alexanderwales 0.384615 5118664 daystar721 0.333333 3989854 Sir Poley 0.222222 4767519 Scientist’s Thesis 0.187500 3344060 Velorien 0.166667 Ranking Stories Now that I’ve got a similarity score for actors, I still need to convert this into a story recommendation. A possible strategy is to calculate the average similarity across all authors who have favourited or written a story and use that for the story preference. For example, if alexanderwales (0.38) wrote a story and Sir Poley (0.22) is the only person who liked it, the preference score would be $ \frac{0.38 + 0.22}{2} = 0.3 $ This could work because Similar authors to me like similar stories which are scored higher, while disimilar authors would have lower scores. Outliers, stories I wouldn’t have liked but are liked by a very similar author would be lowered by the dissimilar authors who liked it. This may not work because If a story hasn’t been liked by enough authors, the average wont be very representative. Very popular stories, liked by a large group of people would be ranked lower even if I’d have liked them. Top 5 stories story title sim_total sim_count sim_score 10327510 A Bluer Shade of White 0.384615 1 0.384615 10023949 Harry Potter and the Philosopher’s Zombie 0.717949 2 0.358974 9676374 Daystar’s Remix of Rationality 0.333333 1 0.333333 9794740 Pokemon: The Origin of Species 0.967949 4 0.241987 9658524 Branches on the Tree of Time 0.469361 2 0.234681 Conclusions A Bluer Shade of White and Daystar's Remix of Rationality both have only 1 data point so are probably misscored, on the other hand a story I do like, Methods of rationality has a score of 0.08 because of the popularity problem. Both of these problems are a result of limited data (only 100 authors) and should go away with more. I still see a bunch of stories I haven’t read which look promising and I hadn’t heard of before so tentatively successful, I’ll need to read them to make sure. I encourage you to try this yourself, I’ll be interested to see if it helps. [update] Recommending stories you aren’t interested in? Try out filtered.ipynb to use only a subset of the data filtered by genre and category.

Building a Fanfiction Recommender - II

about 2 years ago | Sidhant Godiwala: Sidhant Godiwala's Blog

In my last post I had started building a fanfiction recommender using collaborative filtering. In this post I’ll work through my solution which you can find here Author Similarity The core of a recommender is the similarity metric, how similar are two authors and how similar are you to them. Since I have sets of stories for each author (and a set of my own favourites), I can use a set distance metric as a measure of similarity. The Jaccard Index is just the the thing. For any two finite sets, the Jaccard Index is the size of the intersection of the sets divided by the size of their union $$ J(A, B) = \frac{| \space A \cap B \space |}{| \space A \cup B \space |} $$ The Jaccard Index lies between 0 and 1, inclusive. 1 when both sets are identical and 0 if they have no elements in common. $$ A = \{ 1, 2, 3 \}, \space B = \{4, 5, 6\}, \space J(A, B) = \frac{0}{6} = 0 $$ $$ A = \{ 1, 2, 3 \}, \space B = \{2, 3, 4\}, \space J(A, B) = \frac{2}{4} = 0.5 $$ $$ A = \{ 1, 2, 3 \}, \space B = \{1, 2, 3\}, \space J(A, B) = \frac{3}{3} = 1 $$ For each author I calculated the Jaccard Index of a set containing their own stories and favourite stories with a set of my favourite stories to get something like the table below. Top 5 authors author name similarity 4976703 alexanderwales 0.384615 5118664 daystar721 0.333333 3989854 Sir Poley 0.222222 4767519 Scientist’s Thesis 0.187500 3344060 Velorien 0.166667 Ranking Stories Now that I’ve got a similarity score for actors, I still need to convert this into a story recommendation. A possible strategy is to calculate the average similarity across all authors who have favourited or written a story and use that for the story preference. For example, if alexanderwales (0.38) wrote a story and Sir Poley (0.22) is the only person who liked it, the preference score would be $ \frac{0.38 + 0.22}{2} = 0.3 $ This could work because Similar authors to me like similar stories which are scored higher, while disimilar authors would have lower scores. Outliers, stories I wouldn’t have liked but are liked by a very similar author would be lowered by the dissimilar authors who liked it. This may not work because If a story hasn’t been liked by enough authors, the average wont be very representative. Very popular stories, liked by a large group of people would be ranked lower even if I’d have liked them. Top 5 stories story title sim_total sim_count sim_score 10327510 A Bluer Shade of White 0.384615 1 0.384615 10023949 Harry Potter and the Philosopher’s Zombie 0.717949 2 0.358974 9676374 Daystar’s Remix of Rationality 0.333333 1 0.333333 9794740 Pokemon: The Origin of Species 0.967949 4 0.241987 9658524 Branches on the Tree of Time 0.469361 2 0.234681 Conclusions A Bluer Shade of White and Daystar's Remix of Rationality both have only 1 data point so are probably misscored, on the other hand a story I do like, Methods of rationality has a score of 0.08 because of the popularity problem. Both of these problems are a result of limited data (only 100 authors) and should go away with more. I still see a bunch of stories I haven’t read which look promising and I hadn’t heard of before so tentatively successful, I’ll need to read them to make sure. I encourage you to try this yourself, I’ll be interested to see if it helps. [update] Recommending stories you aren’t interested in? Try out filtered.ipynb to use only a subset of the data filtered by genre and category.

Vern, a Library For Database Fixtures

about 2 years ago | Daniel Higginbotham: Flying Machine Studios

At work, I've been using yesql and wanted a way to compactly describe some seed data. My first attempt was an utter abomination, but I think I've worked out something pleasant that could be useful to other people. vern is a 54-line project that I'd love to get feedback on before publishing. It's named after one of my cats, this guy: vern Code Here's an example of vern in use: (def fixtures [:endpoints [:wallace {:name "wallace" :id 1} :gromit {:name "gromit" :id 2}] :permissions [;; these permissions belong to wallace [{:endpoint [:endpoints :wallace]} :wallace-read {:name "read" :id 10} :wallace-write {:name "write" :id 11}] ;; these permissions belong to gromit [{:endpoint [:endpoints :gromit]} :gromit-read {:name "read" :id 12} :gromit-write {:name "write" :id 13}]]]) (def entities (atom [])) (do-named (fn [processed group-name entity] (swap! entities #(conj % (:data entity))) (get-in entity [:data :id])) fixtures) @entities ; => [{:id 1 :name "wallace"} {:id 2 :name "gromit"} {:id 10 :endpoint 1 :name "read"} {:id 11 :endpoint 1 :name "write"} {:id 12 :endpoint 2 :name "read"} {:id 13 :endpoint 2 :name "write"}] First, we assign the fixture the colorful name data, then create a "database", which in this case is just an atom holding an empty vector. do-named is where the real action happens. processed is a map of all the named entities that have been processed so far. For example, after processing the first two entities, the value of processed will be {:endpoints {:wallace 1 :gromit 2}} Most likely you won't need it but it's there in case you do. group-name will be :endpoints and then :permissions in this example. In real life, I use this to determine which table I need to insert the entity's data into. entity will be something like {:name :wallace :data {:name "wallace" :id 1}} In the example, you're just using conjing (:data entity) onto the entities atom's vector. Here's what I do in real life, though: (defn load-fixtures [db fixtures] (d/do-named (fn [processed group-name entity] (:generated_key (q/insert! group-name db (:data entity)))) fixtures)) This uses yesql's functionality to insert a row in a database and return the value of the key that was generated for every entity in the fixture. The reason you want to return the generated key is so that you can refer to this record in later entities. If a subsequent entity is defined as {:name "belongs-to-wallace" :endpoint-id [:endpoints :wallace]} then do-named uses the corresponding value in the processed map. When do-named sends the first "permission" entity to its function, the entity looks like this: {:name :wallace-read :data {:name "read" :id 10 :endpoint 1}} The last feature is that you can group common attributes together in a vector. You can see this in the permissions: [[{:endpoint [:endpoints :wallace]} :wallace-read {:name "read" :id 10} :wallace-write {:name "write" :id 11}]] You could have written these entities as follows: [:wallace-read {:name "read" :id 10 :endpoint [:endpoints :wallace]} :wallace-write {:name "write" :id 11 :endpoint [:endpoints :wallace]}] But that kind of repetition can pretty old pretty quickly. Here's the general form of the fixtures: [:entity-group-key [:entity-1-key ;; entity keys are optional {:name "zip"} ;; using a sequential structure allows you to reference ;; another entity {:parent-id [:entity-group-key :entity-1-key] :name "zip's child 1"} ;; you can define common associations by grouping entities in a ;; sequential; the first element contains the common associations [{:parent-id [:entity-group-key :entity-1-key]} {:name "zip's child 2"} {:name "zip's child 3"}]] :entity-group-2 [{:entity-group-1-id [:entity-group-key :entity-1-key]}]] Request for Feedback This is a tiny library, and I hope it might yield a couple fun rounds of code golf. In particular, I have the sneaking suspicion that I'm neglecting some useful functions from Clojure's standard library. I considered using zip but that seemed too heavyweight. Also, I think I could just pass the entity's data to the do-named function. I'm also curious if there's a name for this kind of pattern, where you aren't solely processing one sequence item at a time but care about what you last processed as well (this is how names get assigned to entities).

Troubleshooting GitHub WebHooks SSL Verification

about 2 years ago | Steve Jansen: /* steve jansen */

GitHub WebHooks and Jenkins go together like peanut butter and jelly. SCM Webhook trggers are way more efficient for Jenkins over SCM polling. Webhooks also give you a great UX – Jenkins reacts immediately when you push a commit or open a pull request. I am a huge fan of using GitHub OAuth for single sign on with Jenkins. The security of OAuth really depends on TLS/SSL for protecting the token in transit, so your Jenkins should use SSL when using GitHub OAuth. GitHub’s Webhooks have the option to perform SSL certificate validation. I’ve run into issues with GitHub’s “Hookshot” HTTP engine failing SSL verification for otherwise valid certificates. Most of my problems were related to installing intermediate CA certificates on Jenkins. GitHub WebHook configuration and SSL certificate verification Here’s an example of a pull request webhook failing SSL validation in GitHub: Screenshot of a failed certificate validation in a GitHub WebHook configuratioon screen GitHub will send a “hello, world” webhook ping when you create a new webhook. Note that SSL verification failures will have an usual HTTP response code of 0: Screenshot of a "hello, world" webhook ping from GitHub The response tab will be empty: Screenshot of a "hello, world" webhook ping from GitHub Troubleshoot your SSL certificate with the Symantec SSL Toolbox Symantec offers a very helpful tool to check your certificate installation as part of their “SSL Toolbox”. The tool offers suggestions to remedy certificate issues and links to download missing intermediate CA certificates. Here’s an example of a Symantec diagnostic failure due to a missing intermediate certificate: Screenshot of a failed certificate validation in the Symantec SSL Toolbox Using the Symantec SSL Toolbox against servers with IP ACLs A great feature of the Symantec SSL Tool is how the tool supports non-public servers behind a firewall. The tool will first attempt to verify your cert from a Symantec server. If your server is behind a firewall that denies public access except for whitelisted origins, the SSL toolbox has a fallback mode to run a Java applet in your browser. The applet will perform the SSL verification requests from local machine rather than a Symantec server. TIP: GitHub publishes their public IP range for webhooks as part of the GitHub metadata API if you wish to create firewall whitelist rules for GitHub webhook requests. Symanetc SSL Toolbox Applet and OS X Java security Given the recent security vulnerabilities of Java applets, getting the applet to run on OS X takes some work. Here are the setting I need to use the applet in Safari 7.1 on OS X 10.9.5 (Mavericks) using the Oracle/Sun JRE 1.7 R71. (I never succeeded in using the applet in Firefox or Chrome despite serious effort.) I needed to enable Safari to run the SSL Toolbox applets in “unsafe mode” without prompting: Screenshot of a Safari security settings for the Symantec SSL Toolbox I also had to temporarily downgrade the JVM 1.7 browser security level to “Medium” and add an execption for https://ssltools.websecurity.symanttec.com: Screenshot of a JVM security settings for the Symantec SSL Toolbox Green is good! Once you’ve resolved your certificate issues, you should see green in both the Symantec SSL Toolbox and the GitHub WebHook requests after enabling SSL verification. Screenshot of a succesful certificate validation in the Symantec SSL Toolbox Screenshot of a succesful certificate validation in a GitHub WebHook configuration screen

GIT Workflow that Works …. worked for me!

about 2 years ago | Sanjeev Mishra: Sanjeev Mishra's Blog

Before I jump to that actual article I want to make sure that we are on the same page as far as the objectives are concerned. Its important because, if the objectives are not clear, the strategy that worked for me, may not work for you. So, here is what I always wanted for my […]

Integrating Rackspace Auto Scale Groups with ObjectRocket Mongo databases

about 2 years ago | Steve Jansen: /* steve jansen */

Thanks to some pretty awesome support from Jon Fanti and John Moore at ObjectRocket, I learned this week that we had missed two key optimizations for using ObjectRocket MongoDBs with Rackspace Auto Scaling groups (ASGs). ServiceNet First, ObjectRocket support can provide medium and large customers with a server FQDN that resolves to a ServiceNet private IP. You can use this FQDN instead of the server name shown in the connect string for your instance. As long as your cloud servers and ObjectRocket are in the same Rackspace data center, the ServiceNet connection string will avoid data transfer charges and keep your packets from transiting the public Internet. Dynamic IP ACLs We struggled to manually maintain the list of authorized IPs for our ObjectRocket MongoDB instances when a ASG would add a new node. We had a backlog plan to script the IP ACLs using Chef, but, hadn’t found the time yet. Fortunately, ObjectRocket already supports this! See https://app.objectrocket.com/external/rackspace Screenshot of ObjectRocket integration with Rackspace According to John, the ObjectRocket integration with your Rackspace Cloud account will automatically sync the IP ACLs with your list of current Cloud VMs. Moreover, the integration will ignore any manual IP ACLs you create (as long as your description doesn’t use the rax- prefix).