Skip to content

Commit af5713f

Browse files
author
ebahsini
committed
guys... english...
1 parent 2b41812 commit af5713f

6 files changed

+36
-38
lines changed

resources/partials/blog-posts/2016-08-27-zsh-in-the-pursuit-of-efficiency.markdown

+9-9
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ layout: blog_post
55
categories: zsh
66
-->
77

8-
__Zsh__ - a very powerful advanced shell significantly increases your efficiency as its exploration.
8+
__Zsh__ - a very powerful advanced shell significantly increases your efficiency as a developer.
99

1010
## Zsh and iTerm2
1111

12-
We will use zsh in combination with [iTerm2](http://iterm2.com/features.html), as well as setup zsh completions using homebrew.
12+
We will use zsh in combination with [iTerm2](http://iterm2.com/features.html). We will also setup zsh completions using homebrew.
1313

1414
```clojure
1515
brew update
@@ -25,35 +25,35 @@ chsh -s /usr/local/bin/zsh
2525

2626
## Oh My Zsh
2727

28-
Now let's setup framework "Oh My Zsh". It includes a lot of plugins and themes, allowing customize to suit every taste.
28+
Now let's setup "Oh My Zsh" framework. This framework includes a lot of plugins and themes allowing customization to suit every taste.
2929

3030
```clojure
3131
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
3232
```
3333

3434

35-
### Choose theme
35+
### Choose your theme
3636

37-
We will use "agnoster" theme as example. For iTerm2 You need to download Solarized Dark:
37+
We will use the "agnoster" theme as an example. For iTerm2 you will need to download Solarized Dark:
3838

3939
```clojure
4040
git clone https://github.com/CyberLight/agnoster.zsh-theme
4141
```
4242

43-
Import Solarized Dark.itermcolors from previously downloaded archive.
43+
Import Solarized Dark.itermcolors from the previously downloaded archive.
4444

4545
*iTerm2 menu -> Preferences -> Profiles -> Colors -> Color Presets -> Import*
4646

4747
<img src="https://s3.amazonaws.com/blog-images.epxlabs.com/7/iterm_profiles_colors.png" width="600">
4848

49-
After import it should appear in list of presets:
49+
After the import it should appear in a list of presets:
5050

5151
<img src="https://s3.amazonaws.com/blog-images.epxlabs.com/7/iterm_profiles_colors_presets.png" width="200">
5252

5353

5454
#### Install fonts
5555

56-
Some themes, like "agnoster" in our case, need to install additional fonts. Run next script to do this:
56+
Some themes, like "agnoster" in our case, need to install additional fonts. Run the next script to do this:
5757

5858
```clojure
5959
git clone https://github.com/powerline/fonts.git
@@ -73,7 +73,7 @@ done
7373
./install.sh
7474
```
7575

76-
Change Font in iTerm2:
76+
Change the font in iTerm2:
7777

7878
*iTerm2 menu -> Preferences -> Profiles -> Text -> Change Font (for Regular font and for Non-ASCII)*
7979

resources/partials/blog-posts/2016-09-03-cost-savings-in-serverless-world.markdown

+9-10
Original file line numberDiff line numberDiff line change
@@ -7,45 +7,44 @@ categories: serverless
77

88
# Cost Savings: Vol. 1 - Cost Savings in a Serverless World
99

10-
EPX Labs loves to save money. Saving our clients money is a win-win proposition.
10+
EPX Labs loves to save money. Saving our client's money is a win-win proposition.
1111

1212
We typically engage clients with a requirements gathering and infrastructure analysis technical spike.
1313

14-
Our analysis provides us with the data to target major cost centers of our clients cloud deployments and produce coherent strategies for rolling out cost saving infrastructure enhancements.
14+
Our analysis provides us with the data to target major cost centers of our client's cloud deployments and produce coherent strategies for rolling out cost saving infrastructure enhancements.
1515

1616
Some of the enhancements and major cost centers we have encountered in the past:
1717

1818
- Unnecessary database caching
19-
- Over-provisioned cloud components (EC2, RDS, DynamoDB, S3)
19+
- Over-provisioned cloud components (EC2, RDS, DynamoDB, etc.)
2020
- Poor infrastructure design leading to inefficient data transfer operations
2121
- Improper capacity planning
2222
- Missed auto-scaling opportunities
2323
- Lack of applying Serverless design principles (leveraging AWS Lambda, API Gateway, Google Cloud Functions, IBM OpenWhisk, Azure Functions, et. al.)
24-
- Levering the best technologies available which are optimized for speed and cost (reducing legacy overhead and technical debt simultaneously)
24+
- Leveraging the best technologies available which are optimized for speed and cost (reducing legacy overhead and technical debt simultaneously)
2525
- Moving long term storage and backups with disaster recovery to more cost effective solutions
2626

27-
Opening up IT budget grants us the ability to focus on enhancing the end-users experience and providing customers with more value.
27+
Opening up IT budget grants us the ability to focus on enhancing the end-user's experience and providing customers with more value.
2828

2929
Typically after our first cost savings iteration smiles turn to improved budgets and plans/wishes turn into projects.
3030

3131
On a recent engagement EPX Labs - through a DevOps, Clojure and Pursuit of Serverless strategy - reduced a clients monthly cloud costs by more than half.
3232

33-
Imagine what you could do if you cloud bill was less than half of your current monthly expenditure (give much deserved raises to your best employees, hire more personnel, enhance your marketing and sales budget, reallocate the savings to your product development, move your product into more verticals, etc.)
34-
35-
Here is a snap of EPX Labs curtailing cloud infrastructure spend by more than half on AWS (amazon web services):
33+
Imagine what you could do if your cloud bill was less than half of your current monthly cloud expenditure (give much deserved raises to your best employees, hire more personnel, enhance your marketing and sales budget, reallocate the savings to your product development, move your product into more verticals, etc.)
3634

35+
Here is a snap of EPX Labs curtailing cloud infrastructure spend by more than half on AWS (Amazon Web Services):
3736

3837
![image-1]~*serverless-cost-savings-1.jpg*~
3938

4039
And the same bar chart in linear fashion.
4140

4241
![image-2]~*serverless-cost-savings-2.jpg*~
4342

44-
For AWS costs you can refer to AWS pricing: [https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/)
43+
For AWS costs you can refer to [AWS pricing](https://aws.amazon.com/pricing/)
4544

4645
Take special note of the AWS free tier which is heavily exploited when applying serverless design principles (AWS Lambda et al.): [https://aws.amazon.com/free/](https://aws.amazon.com/free/)
4746

48-
A great calculator for thinking about Serverless cost savings can be found here: [http://serverlesscalc.com/](http://serverlesscalc.com/) by Peter Sbarski [@acloudguru](https://twitter.com/acloudguru)
47+
A great calculator for thinking about Serverless cost savings can be found [here](http://serverlesscalc.com/) by Peter Sbarski [@acloudguru](https://twitter.com/acloudguru)
4948

5049

5150

resources/partials/blog-posts/2016-09-04-serverless-where-do-i-start.markdown

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ We field many inquiries and the general questioning follows the path:
1111

1212
"Okay, we agree, Serverless is awesome, but a complete rewrite at this time sounds expensive - where should we start?"
1313

14-
For this we recommend developing a infrastructure strategy that couples cost savings with Serverless component implementations overtime.
14+
For this we recommend developing an infrastructure strategy that couples cost savings with Serverless component implementations overtime.
1515

1616
A general format for this type of engagement:
1717

18-
- Requirements gathering and Infrastructure cost center anaylsis (we figure out where we can save money off the bat)
18+
- Requirements gathering and Infrastructure cost center analysis (we figure out where we can save money off the bat)
1919
- Select the lowest hanging fruit to be converted, cost-effectively, to Serverless systems
20-
- Roll-out cost savings or Serverless enhancements in Agile sprints: [https://en.wikipedia.org/wiki/Scrum_(software_development)](https://en.wikipedia.org/wiki/Scrum_(software_development)) or following the Kanban method: [https://en.wikipedia.org/wiki/Kanban](https://en.wikipedia.org/wiki/Kanban)
20+
- Roll-out cost savings or Serverless enhancements in [Agile sprints:](https://en.wikipedia.org/wiki/Agile_software_development) or following the [Kanban method:](https://en.wikipedia.org/wiki/Kanban)
2121
- Accrue cost savings, plan further enhancements, rinse and repeat
2222

23-
Also see our Blog post [Cost Savings: Vol. 1 - Cost Savings in a Serverless World](http://staging.epxlabs.com/blog/2016-09-03-cost-savings-in-serverless-world/).
23+
Also see our Blog post [Cost Savings: Vol. 1 - Cost Savings in a Serverless World](http://www.epxlabs.com/blog/2016-09-03-cost-savings-in-serverless-world/).
2424

resources/partials/blog-posts/2016-09-05-serverless-nyc-the-serverless-landscape.markdown

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ categories: serverless
77

88
# Serverless NYC - "The Serverless Landscape"
99

10-
EPX Labs is now co-organizing [Serverless NYC](http://www.meetup.com/Serverless-NYC/events/233736279/)
10+
EPX Labs is now co-organizing [Serverless NYC](http://www.meetup.com/Serverless-NYC/events/233736279/).
1111

1212
With a keen eye on turning the conversations into technical how-to's and implementation strategies, please join us on September 15th, 2016 for drinks, food, and tech talks by some of the first to the Serverless scene.
1313

14-
If you are interested in giving a talk, please reach out to [email protected]
14+
If you are interested in giving a talk, please reach out to: [email protected]
1515

16-
If you are interested in sponsoring or contributing to the Serverless NYC group please email evan@epxlabs.com
16+
If you are interested in sponsoring or contributing to the Serverless NYC group please email: hello@epxlabs.com

resources/partials/blog-posts/2016-10-25-an-introduction-to-clojure-spec.markdown

+10-11
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
# An Introduction to Clojure.Spec
22
##### By Alex Martin
33

4-
[Clojure.spec](http://clojure.org/about/spec) is a great tool for adding some tests and validation to your clojure project. I recently used it in a project that required validating data as it came into the database.
4+
[Clojure.spec](http://clojure.org/about/spec) is a great tool for adding some tests and validation to your clojure project.
55

6-
To begin, you require clojure.spec in one of your clj files.
6+
To begin require clojure.spec in your clj namespace.
77

88
```clojure
99
(ns your-file.core
1010
(:require [clojure.spec :as s])
1111
```
1212

13-
You now have access to all the methods that this library provides to you.
14-
To begin with, you need to defining specs by associating them with a keyword and a validation, like so:
13+
To begin let's define specs by associating them with a keyword and a validation, like so:
1514

1615
```clojure
1716
(s/def ::first-name string?)
1817

1918
```
2019

21-
Many times, you will want a more specific validation, such as one that requires regex. You'd do this by first defining the regex separately, and then calling it using an anonymous function as the second argument in a spec definition.
20+
Many times, you will want a more specific validation such as one that requires regex. You can accomplish this (non-clojure best practices) by first defining the regex separately and then calling it using an anonymous function as the second argument in a spec definition.
2221

2322
```clojure
2423
(def id-regex #"^\d{6}$")
@@ -32,19 +31,19 @@ What happens if you want multiple validations for one spec? You can use the `and
3231
(s/def ::time-type (s/and string? #(re-matches time-regex %)))
3332
```
3433

35-
This spec will only return true if both validations are required. Of course, `or` can be used if you only need for one of several validations to true.
34+
This spec will only return true if both validations are required. Of course, `or` can be used if you only require one of several validations to be true.
3635

3736
```clojure
3837
(s/def ::day (s/or "1" "2" "3" "4" "5" "6" "7"))
3938
```
4039

41-
Another, cleaner way of writing the above spec would be to pass in a set as the second argument. The spec would return true if the entry were included in the set, and false otherwise.
40+
Another, cleaner way of writing the above spec would be to pass in a set as the second argument. The spec would return true if the entry was included in the set, and false otherwise.
4241

4342
```clojure
4443
(s/def ::day #{"1" "2" "3" "4" "5" "6" "7"})
4544
```
4645

47-
You have several options for methods to test whether an entry would pass a validation or not. The best is `valid?`, which will return true or false depending on whether the entry passes.
46+
You have several options for testing whether an entry passes validation. The best is `valid?`, which returns true or false.
4847

4948
```clojure
5049
(s/def ::first-name string?)
@@ -54,7 +53,7 @@ You have several options for methods to test whether an entry would pass a valid
5453
=> false
5554
```
5655

57-
Another option is `conform`, which will return the entry itself if it meets the validation, and false otherwise.
56+
Another option is `conform`, which returns the validated data if true and false otherwise.
5857

5958
```clojure
6059
(s/def ::day #{"1" "2" "3" "4" "5" "6" "7"})
@@ -64,14 +63,14 @@ Another option is `conform`, which will return the entry itself if it meets the
6463
=> false
6564
```
6665

67-
Once you've defined a set of specs that you want to use to test a given object, you then must create an **entity map** for that object. We use the `keys` method to define all specs the given object should be validated for, specifying which ones are optionnal or required with `:req` and `:opt`.
66+
Once you've defined a set of specs that you want to use to test a given object you then can create an **entity map** for that object. We use the `keys` method to define all specs that the data should be validated for. You may specify which ones are optional or required with `:req` and `:opt`.
6867

6968
```clojure
7069
(s/def ::person (s/keys :req [::first-name ::last-name ::email]
7170
:opt [::phone]))
7271
```
7372

74-
You can then pass in maps to either of the validation methods we saw earlier, to find out whether or not your data is valid. It's that easy!
73+
You can also pass maps to either `conform` or `valid?` to find out whether or not your data is valid. It's that easy!
7574

7675
```clojure
7776
(s/valid? ::person (::first-name "Alex" ::last-name "Martin" ::email "[email protected]")

resources/partials/blog-posts/2016-10-25-stripe-clojure-blog-post.markdown

+1-1
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ This returns a success response with the updated customer object to show that th
395395

396396
### Taking it a step further
397397

398-
The [stripe-clojure](https://github.com/prachetasp/stripe-clojure) library lays the foundation fora Stripe disruption in a functional environment. It contains all of the tools needed to build complex payment and customer management systems and is a great fit for building a serverless solution to payment processing. If you would like to know more about going Serverless contact EPX Labs to find out how you could improve application reliability while cutting costs. #webscale!
398+
The [stripe-clojure](https://github.com/prachetasp/stripe-clojure) library lays the foundation for a Stripe disruption in a functional environment. It contains all of the tools needed to build complex payment and customer management systems and is a great fit for building a serverless solution to payment processing. If you would like to know more about going Serverless contact EPX Labs to find out how you could improve application reliability while cutting costs. #webscale!
399399

400400
*********************
401401

0 commit comments

Comments
 (0)