update content

This commit is contained in:
Daniel Alejandro Gallegos 2024-04-16 19:42:14 -04:00
parent e4dda25041
commit 8e74993346
Signed by: taco
SSH key fingerprint: SHA256:YgoAbZ3x1d1kTGKEmT8elbjEvK/mn0hc4ATFgWhykR0
78 changed files with 8 additions and 986 deletions

7
content/posts/_index.md Normal file
View file

@ -0,0 +1,7 @@
+++
title = 'Posts'
date = 2023-01-01T08:30:00-07:00
draft = false
+++
Tempor est exercitation ad qui pariatur quis adipisicing aliquip nisi ea consequat ipsum occaecat. Nostrud consequat ullamco laboris fugiat esse esse adipisicing velit laborum ipsum incididunt ut enim. Dolor pariatur nulla quis fugiat dolore excepteur. Aliquip ad quis aliqua enim do consequat.

View file

Before

Width:  |  Height:  |  Size: 436 KiB

After

Width:  |  Height:  |  Size: 436 KiB

View file

Before

Width:  |  Height:  |  Size: 748 KiB

After

Width:  |  Height:  |  Size: 748 KiB

View file

Before

Width:  |  Height:  |  Size: 869 KiB

After

Width:  |  Height:  |  Size: 869 KiB

View file

Before

Width:  |  Height:  |  Size: 784 KiB

After

Width:  |  Height:  |  Size: 784 KiB

View file

Before

Width:  |  Height:  |  Size: 728 KiB

After

Width:  |  Height:  |  Size: 728 KiB

View file

@ -9,7 +9,7 @@ tags:
- "tech"
---
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from 2016.
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from **2016.**
<figure>

View file

@ -1 +0,0 @@

View file

@ -1,156 +0,0 @@
---
title: "[old] 9 agile techniques that will change your life"
date: "2016-09-07"
tags:
- "agile"
- "english"
- "productivity"
- "programming"
- "tech"
---
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from 2016.
![](images/846ce-1fnukauh56gz0ntn24ost2a.png)
#### Learn about TDD, OKRs, CI, CD and more!
Youve probably heard of Agile development somewhere. Its one of the most popular ways of making software these days. With Agile development, you can pump out functioning software within a few weeks and make both your developers and your clients happy.
Here are nine Agile techniques that have helped us here at [devAcademy](https://medium.com/u/e90784f3811e), and that can help you, too.
* * *
### 1\. Test Driven Development
TDD is one of the most popular development processes today, encouraging a sense of confidence in ones code and helping you provide simpler answers to problems. With the [wide variety of testing frameworks available for every programming language out there](https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks), theres no excuse not to implement TDD in your project.
TDD is a way to define requirements needed to be met through detailed and specific test cases. Afterwards, software is improved to only pass the new tests. Simply put:
- Find out what you want to add.
- Write tests for what you want.
- Write enough code to make your tests pass.
- ???
- Profit!
<figure>
![](images/1ea23-1kuocwnkdwmkkk3tev36m4g.png)
<figcaption>
You see that right there? Thats TDD in action.
</figcaption>
</figure>
Obviously, your tests should include some sort of system of verification that the desired result is achieved correctly. Your test code should also have the same upkeep and maintenance as your production codeits important! Your tests shouldnt depend on states of the machine youre testing on, and tests shouldnt depend on each other. They should be fast to execute and easy to integrate on any machine.
On our Ruby projects, we use a combination of [RSpec](http://rspec.info/) and [Shoulda](https://github.com/thoughtbot/shoulda) to write awesome, transparent tests for our code. Find a testing framework thats right for you and go wild with it.
### 2\. Continuous Integration
When we make things, we normally make a branch for each feature that were making, then merge it back into the master branch after were done modifying our own code. This makes sure that everyone always has the most updated version of our code.
<figure>
![](images/be0f4-1gmufdl3fkgkgwxljtekwaw.png)
<figcaption>
Go with the [flow](https://guides.github.com/introduction/flow/)~
</figcaption>
</figure>
Keep your branch updated and make sure your code is available to everyone when youre done with it. We use platforms like Travis CI to make sure that our code is fully functioning with tests and code quality checks when we merge something to master so that our modifications to the master branch dont affect everyone else negatively.
### 3\. Continuous Deployment
When I make something new, I always get antsy. I want my new code to be out there as fast as possible, and here at dev we feel like its a crucial part of developmentnew issues get found faster and more efficiently, and features are pushed out rapidly.
There are a few drawbacks to Continuous Deployment, just like there are in Continuous Integration, but the benefits vastly outweigh the consequences. Your users can experience your latest features within moments of you pushing your code to your repos and can give you feedback in real time. There are no wait times to let your users get that fresh code smell; they get the latest code, all the time.
\[embed\]https://stories.devacademy.la/this-is-what-youre-missing-out-on-with-continuous-deployment-afa6b49c4c8c\[/embed\]
### 4\. Daily stand-ups
The best teams make sure that theyre all on the same page. You cant work on a project together unless you know what everyone is doing. Daily stand-ups help teams work in synergy, letting others know whats on your plate and your daily progress.
![](images/6a248-1edncfgm8vobt9moh2e94kw.png)
A normal stand-up consists of three questions presented to all team members:
- **What did you do yesterday?**
This question lets your team members know what progress you made on the things you were going to do yesterday, and if you completed them or not. It also makes sure that your other teammates are informed on activities that happened yesterday so they dont repeat objectives in their work today.
- **What did you do today?**
This questions lets your team members know what youre going to do today. It also informs your teammates on things that they should try to work on with you and collaborate with so you can achieve your objectives faster.
- **Is anything hindering your progress?**
This is probably the most important question in a stand-up. Being open and honest about our faults helps us grow as people in general. If something was blocking your progress, it doesnt make you a worse person, it just means you need to improve in that area. Thats the whole point of being agileidentifying obstacles quickly and resolving them quicker.
### 5\. Pair programming
The best ideas and the best projects have been made by working together. In our personal experience, weve found that tacking two people onto one objective helps a lotyou have someone else to bounce ideas off of and it distributes some of the load that comes with each objective.
![](images/9bc97-1u0mw6jbas3wbth0fwnazvg.png)
Another person can also help remind you of what goals you need to reach together. With someone else on your team, you can reach objectives faster since theres someone to corroborate your work.
### 6\. Retrospectives
Here at [devAcademy](https://medium.com/u/e90784f3811e), we have a weekly meeting to review what we did last week, how we did it, how/if we failed at doing something, and how we contributed to our Objectives and Key Results this week.
> Coding isnt just a way to make computers do thingsits a personal journey of finding a digital solution to a problem.
Coding isnt just a way to make computers do thingsits a personal journey of finding a digital solution to a problem. Retrospectives let us help others provide input on everyones progress so we dont feel alone on our programming expedition.
<figure>
![](images/4bce5-0zzdmerebdnkfeoj_.jpg)
<figcaption>
[What a retrospective looks like at devHouse](https://www.facebook.com/devacademyla/photos/a.356158231151265.1073741827.316005858499836/838163579617392/)
</figcaption>
</figure>
In Agile development, one of the most essential parts is communication. This helps us achieve just that. We have a meeting every Friday morning to socialize and check on our progress as a team. You should, too.
### 7\. Planning
This is really a no-brainer. You should always make sure that your activities are planned out with some tool that fits in with Agile methods. We use Basecamp, but you can use tools like Trello, Asana, or even plain old Google Calendar for planning out things with your team.
Making sure you have a set timeline makes sure that you can verify that youre getting work done efficiently. If you can meet your goals before the allotted time frame, youre probably doing way better than you planned, which is great! Having something to refer to in terms of your progress helps you easily and transparently analyze what you need to improve on, and how to pace yourself.
### 8\. Code reviews
Your code isnt always going to be the best. Sometimes you think your code is awesome, but you havent seen the glaring security error or possible cases that could creep up on you in production. Thats why we review each others code here at [devAcademy](https://medium.com/u/e90784f3811e). By implementing pair programming, this should be really easy. Your partner and/or supervisors should be able to check your code easily and transparently.
> In Agile development, transparency and communication is essential.
![](images/8cd41-1vto_rjkx4oopljeuuvtq9a.png)
We use GitHub for our code, so we normally comment on our pull requests so we can scrutinize the code were working on! That way our entire team is on the same page and we can see why we did/didnt merge something to the master branch. In Agile development, transparency and communication is essential, and this helps us achieve just that.
### 9\. Objectives and Key Results
Have you ever had a big project that you really want to finish, but dont know where to start? OKRs can help you out with that. This technique of planning out progress and key points in your project came to be in 1999 at Google, and since then theyve dominated the market by using this technique. Maybe theyre onto something, eh?
A good objective encompasses a big goal, answering what your final ambition is. It can be something like “Adopt Agile development techniques”. The point is to have something to work up to.
Good key results show you the details of the journey youre about to take. Theyre small steps towards your goal, and they dont always have to be linear! Things like “Educate team members about Agile techniques”, “Improve productivity using Pair Programming” and “Use OKRs to plan out our next project” are all awesome Key Results because they talk about steps to reach your objective.
Once you have some OKRs planned out, youll start to notice that youre going to be more organized and get more stuff done as a team. Youll also feel awesome when you cross one of those Objectives off! Its a great experience.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

View file

@ -1,108 +0,0 @@
---
title: "[old] everhour vs. hubstaff"
date: "2017-01-11"
tags:
- "english"
- "everhour"
- "startup"
- "tech"
- "time-management"
---
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from 2017.
![](images/cd7de-177ylvnpfmzpdvg6-8zzbwq.png)
#### What the difference is, and why you might want to switch
Here at [devAcademy](https://medium.com/u/e90784f3811e) we constantly strive to make ourselves better and find the tools to make our workflow more efficient and streamlined. This helps our developers be less stressed about the way they manage their time, leaving them to focus fully on the work they need to do.
Recently, we tried out [Everhour](https://everhour.com/?utm_source=devacademy&utm_campaign=k-devacademy-medium&utm_medium=blog) and implemented it into our workflow. After trying it out for a week, weve decided we want to stick with it. Heres why.
#### Reporting vs. Tracking
If you look at our previous articles, youll notice that we were using Hubstaff before we switched. Hubstaffs workflow focuses on tracking what hours youve worked. Everhour focuses on tracking the tasks youve completed instead, letting your working hours be a bit more flexible.
Thats not to say that Hubstaff isnt goodHubstaff is actually pretty good! Their billing system helped us pay our employees by the hour according to what they really clocked in, but we soon realized that it didnt fit our agile workflow. Hubstaff works best in companies using a more traditional workflow, one where the time spent on a project is more valued than the final product itself.
![](https://cdn-images-1.medium.com/max/800/0*wWduLU_7L61QPSfL.)
We focus more on providing our clients with a quality final product, so time tracking isnt as important. We contract our part-time employees per project, not per number of hours. With our agile way of working, we cant set rigid time frames on the projects we work onit breaks the flow of what needs to be done.
By using Everhour, were able to more easily quantify how long well take on a project without feeling pressured to complete our work. We can take our time on each project and work without feeling the weight of an impending deadline on our shoulders.
#### Keeping ourselves secure and trusting ourselves
Our old tool had a feature that took screenshots periodically. This feature allows higher-ups in the company to review and check what we were really doing in the time we tracked. This doesnt really work in our company, though. We all felt like we were being watched over our shoulder, and like we werent trusted enough to get stuff done.
Here at devAcademy, we believe in everyone having an equal footing, where titles shouldnt matter and where ideas can flow. This tool unintentionally created a hierarchy of people who administrated the tool, making others feel inferior and uncomfortable. This is not to say that the tool is badit just doesnt work for us.
Along with that anxious feeling that being watched, we noticed that the only transparent way to track what we were doing is by taking screenshots without blurring them. This poses a new problem.
<figure>
![](images/bd437-0ven-lxa4shczster.jpg)
<figcaption>
[\[Watching the WatchersCarsten\]](https://stock.tookapic.com/photos/56574)
</figcaption>
</figure>
Any security buff knows that taking screenshots periodically and sending them to the cloud can invite people to try and peek on personal information that you access while youre working. The images taken can include passwords and key parts of the projects we were working on that we didnt want to make public. This is a problem that worried many of our developers.
By using Everhour, were able to feel less restricted and work freely without having to avoid things that could otherwise expose parts of our personal life, like bank statements or access keys. Many of us have reported feeling like we can be more relaxed here with how we tackle problems, letting our work flow freely instead of being restricted to a rigid time frame.
#### A seamless reporting experience
Have I mentioned Everhours Chrome Extention? Its pretty awesome. It integrates directly into Basecamp, allowing us to get to work on tasks in Basecamp 3 right away instead of having to switch to another app. This seamless integration into the apps we already use lets us implement it without an extensive onboardingwe can just use Everhour as if it were a natural thing to do.
With Hubstaff, we had to switch to another application and wait for all of our Basecamp 3 tasks to sync with their API to begin working. This happened _often_. With Everhour, were able to get start working right when we assign/were assigned tasks.
![](images/cef75-1tnaxnkod-ua-jubkybbjjq.png)
Along with letting us track time, Everhour lets us estimate the amount of time we might spend on a project, letting us better plan out our list of things to tackle this coming week. The best part about all of this is, its all right there in Basecamp! Its so seamless that you dont even have think about adding an estimate, it seems like part of the natural process of adding a new To-Do.
![](images/981e4-13g0n1g8n-q-2iybduwbigw.png)
Another thing we adore about Everhour is their rigorous reporting system. We highlighted how much we like reporting in our Basecamp article, and this system helps us integrate Everhour effortlessly with our workflow on Basecamp 3.
The last reporting system we used left us with much to be desired, so this is a breath of fresh air. You can create custom reports, which has a easy to use interface that allows you to change any aspect of how everything is presented to the other users.
<figure>
![](images/73d11-1tk52ev52bomsllbs7-2lxw.png)
<figcaption>
Ricing time.
</figcaption>
</figure>
This helps us with our daily report reviewing what we did yesterday and what were going to do today. In fact, we just include a screenshot of a predetermined custom report and describe what wasnt “closed” yesterday that was left to be done today.
![](images/812c9-1yskjzal45dfzvfexvxgwbw.png)
This makes it easier for us to start our day and get informed on what everyones doing, refreshing ourselves on what we did yesterday and what needs to get done.
Theres a lot more to Everhour, and it has a lot of potential. Were integrating it into our workflow because it works really well for us. Its streamlined how we communicate with each other on what projects were doing. We think itll work great for you too.
If youre interested in trying out [Everhour](https://everhour.com/?utm_source=devacademy&utm_campaign=k-devacademy-medium&utm_medium=blog), we have a special code just for our readers:
```
devacademy
```
This code will allow you to get a 10% lifetime discount on your [Everhour](https://everhour.com/?utm_source=devacademy&utm_campaign=k-devacademy-medium&utm_medium=blog) subscription. Use it when youre checking out to take advantage of being one of our awesome readers. 😉
* * *
### If you really liked this post, be sure to click that little heart so that others can find it!
#### And if you liked this, you should check these articles out:
\[embed\]https://stories.devacademy.la/hello-basecamp-farewell-slack-35ed2e2de6b9\[/embed\]\[embed\]https://stories.devacademy.la/hello-basecamp-farewell-slack-35ed2e2de6b9\[/embed\]\[embed\]https://stories.devacademy.la/hello-basecamp-farewell-slack-35ed2e2de6b9\[/embed\]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

View file

@ -1,142 +0,0 @@
---
title: "[old] hello, basecamp — farewell, slack"
date: "2016-10-28"
tags:
- "communication"
- "english"
- "productivity"
- "startup"
- "tech"
---
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from 2016.
>
> (i no longer recommend basecamp.)
<figure>
![](images/93ff6-19wudiq3-onrs5yerswabrq.png)
<figcaption>
c:
</figcaption>
</figure>
#### Why we stopped Slacking and set up a Basecamp
We recently switched to Basecamp at [devAcademy](https://medium.com/u/e90784f3811e). Weve used a few tools to organize and communicate within ourselves, but were never satisfied. We settled on Basecamp after reviewing a few options. Why are we taking the plunge? Lets find out.
* * *
I have never met anyone who has told me that managing a company is easy. Its actually quite hard, and many people will tell you the same.
Why?
Because you hired human beings.
![](images/ac1d6-14rnjkfsxp6uctmagcccllg.png)
It wont matter if your team members come from the same school, like the same things, or work on the same things. Theyll always find a way to clash with each other. Im not going to lieI dont always get along with everyone at dev, and thats natural! You cant expect others to get along with everything you do. Its because youre not a robot. Its [only human](https://youtu.be/MXvVX3mI978?t=12). Luckily, thats where Basecamp comes in.
Basecamp isnt like Slack or Trello. Its a project management system that works differently from anything else weve ever seen. Instead of using lists of cards like Trello, it uses a more forum-like discussion system. Blended with to-do checklists, this lets you manage your projects easier. Instead of having lots of channels like Slack, you simply chat in a per-project Campfire thats already integrated into each project.
#### Lets muse about management
Before moving to Basecamp, we tried a lot of platforms to work on projects together. Trello was one of the strongest competitors, and we used it for a long time. Its the platform I was introduced to when I first joined devAcademy.
Trello is a project management application thats entirely on the web. Its really neat! The entire platform feels fluid and easy to use. They use the kanban paradigm for managing projects, which is separated into boards, which have lists (columns) of cards that let you organize tasks, each with their own to-do lists, descriptions, and comments.
<figure>
![](images/c92b5-1cejlmlda0syljfk05mikqg.png)
<figcaption>
Kanban is a weird word, but it makes for a decent platform.
</figcaption>
</figure>
Trello isnt bad by any means, but it doesnt fit our workflow. Theres no reporting system. This means that you have to manually search for the things that are due on someones plate. Thats time that we dont have to dedicate to see what we need to do or what others need to do. Projects got dragged behind and people didnt know what they needed to do. It lowered our productivity instead of elevating it.
Cards are great for collecting ideas, but theyre not good at giving you a list of things to do. The cards floated around and would always move from one list to another and we would never feel like we could check something off and finish it. It was archived and never seen again.
Basecamp 3 has a whole new way of looking at project organization. Tasks are now individual items in a to-do list, which you can check off when youre done. (Its satisfying.)
![](images/7e021-1zxm8vh5p5srz9afb3s751q.png)
Each item in a list can have anything you can imagine. You can add a due date, comment on it, attach files, assign it to someone… the list goes on. Its super handy and fluid.
Another thing Id like to gush about is Basecamps report system.
![](images/a7fbf-1v0myibwrnk1o2qitqd_qqg.png)
You can ask for a variety of reports in Basecamp 3, and each one provides insight on what everyone is doing or what everyone needs to do.
- “Whats overdue?” gives you a list of tasks that are overdue across your teams and projects. Super awesome for checking up on things that shouldve been done yesterday so you can remind yourself (and others) on what needs to be done!
- “Whats coming up or due soon?” gives you a nice list of chronologically organized tasks across all teams and projects that have a due date. Its a way of knowing what to expect in the future without having to dig too much into your projects.
- “Whats new to-do and whats to-done?” is a clever way of letting you know what things have been added to project checklists and whats been completed.
- “Whats on someones plate?” gives you a nice list of things that someone needs to do. You can check if [Kattya](https://medium.com/u/7cd86522af8d) is going to host another devHangout this week, or if [Lennon](https://medium.com/u/57f86eb26cec) is going to [buy more Post-It notes today](https://www.facebook.com/photo.php?fbid=10209678661577801&set=a.4350837243595.2168310.1067527170&type=3).
- “What has someone been up to?” shows you what someones been doing! This is a great way to review someones progress on projects, or what theyve been posting on Team Message Boards.
- “Who clapped for me?” 👏 check 👏 those 👏 mf 👏 claps 👏 so 👏 you 👏 feel 👏 good 👏
Id like to emphasize that reports have helped us immensely at dev. Were able to see everything clearly and micro-manage ourselves instead of relying on others to nudge us on things that we need to do.
#### Lets chat about chatting
Along with switching out our project management for Basecamps, we migrated our chat from Slack to Basecamp. Slack isnt a bad chat platform, by any means. In fact, I was singing [Slack](https://medium.com/u/26d90a99f605)s praises a few months ago:
\[embed\]https://stories.devacademy.la/why-slack-is-the-best-chat-platform-for-your-team-a13cd07881\[/embed\]
Slack is a great hub for people to communicate with each other. Theyre the best chat platform Ive seen yet. They have awesome archiving, great unfurls, custom emojis and awesome mobile apps. Theyre dominating the chat platform field.
![](images/fdf34-1yldut_yvqidlddtc0p4mja.png)
That doesnt mean that its perfect, of course. Slack is not made for organizing ideas. Its made for watercooler talk. Channels can be made for separate topics, but its a hell of a hassle to sift through the information presented. You have one of two options:
1. Make a billion channels and have nobody use any of them
3. Only have one channel and experience what the depths of hell feel like
Along with that, Slack pressures you into replying to comments and threads _right now_ instead of letting you take your time with messages. This can become an excessive, compulsive checking of your notifications, leading to less productive teams. These can cause unwanted anxiety, as well, even if it doesnt mean to.
> “Have I checked my notifications recently? Is there a message I missed?”
Basecamp lets you organize all of your information and use message boards to post threads instead of cumbersome chat rooms. Important information can be sorted into teams, and its encouraged to use the message boards instead of chats, but the functionality is still there! Campfires are Basecamps chat hubs, where you can chat with everyone on that team about everything related to the topic at hand whenever you have a moment.
<figure>
![](images/7ab4b-1vtjbjr7fgbqc1gvljgsykq.png)
<figcaption>
The Surface Studio _does look pretty hella, not gonna lie_
</figcaption>
</figure>
#### Lets speak of synchronousness
One of Basecamps biggest selling points is that projects can function better if work is asynchronous. A lot of chat platforms and time-saving tools overwhelm users with notifications at times. I really like what one of the founders of Basecamp has to say about interrupting people while theyre being productive:
> …very few things need to be resolved quickly. “Now” is a huge ask of someone else. You may care, but what someone else is already doing may be even more important. Thats why any forms of interruption should be used very carefully.
_\-_ [_Jason Fried_](https://medium.com/u/c030228809f2) _(_[_source_](https://medium.com/@jasonfried/my-fundamental-point-is-that-very-few-things-need-to-be-resolved-quickly-8f070ef5c6a#.oeunj9tk6)_)_
(Jason also wrote an awesome article on why he built Basecamp differently, which you can read [here](https://m.signalvnoise.com/is-group-chat-making-you-sweat-744659addf7d#.rtxx8qcv8).)
At [devAcademy](https://medium.com/u/e90784f3811e), we believe in creating an environment where our developers can code happily. If our team is happy, that means that our clients will be happier, because well be making better products!
We switched to Basecamp because we want an easier way of knowing whats on everyones plate. We wanted to reduce some of the stress that natural comes with work. Its made us more productive and able to focus better on our tasks.
We think you should, too. ❤

View file

@ -1,218 +0,0 @@
---
title: "[old] this is what youre missing out on with continuous deployment"
date: "2016-08-12"
tags:
- "continuous-integration"
- "english"
- "github"
- "programming"
- "tech"
---
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from 2016.
![](images/dc0fc-1uuy2mvmyhb446qd5ovsg-a.png)
#### Ship it harder, better, faster, stronger
A few months ago, [Lennon](https://medium.com/u/57f86eb26cec) asked me to look into Continuous Deployment options for [devAcademy](https://medium.com/u/e90784f3811e). I got excited.
I had used a few CD platforms before with my _very_ short lived experience with setting up a server for a really obscure video g[a](https://github.com/TacoWolf/Canus)me. Most of the forks around there used Travis for their projects to make sure their builds would at least run, but I felt like there was more to continually integrating a project. I wanted to learn more, and now I had the opportunity to do so. Woo!
Now, youre probably asking yourself,
> What can I do with Continuous Integration and Continuous Deployment?
#### **Heres what I found out:**
### Robots test things so you dont have to
You can use CD to run unit tests automatically. Our [website](https://devacademy.la), which runs on Rails, has a bunch of [RSpec](http://rspec.info/) tests that run, and all of those tests have to pass before any changes are accepted into the master branch.
Now, RSpec can be run by itself using [Guard](https://github.com/guard/guard-rspec), but Ive never had any success with it, personally. This means **we have to run tests ourselves locally before we commit to make sure our code works**.
You know how many times we forget to run our tests?
> **Every. Single. Time.**
How do we fix this? **Automate it!**
<figure>
![](images/4c504-1jxzwvlfmv0kn5ar_v1ax9a.png)
<figcaption>
this feels so satisfying to look at
</figcaption>
</figure>
> **By using a Continuous Integration platform, we can make sure that each commit we make passes all of our tests**.
Once a commit is pushed to our GitHub repos, our CI/CD platform grabs the latest copy and starts to run commands based on our configuration file in the repository, which is super easy to configure. Once the command goes green, you can ship it! Super simple stuff.
We also have Simplecov to check our code coverage, which runs right alongside our RSpec tests. That means that when we run a build, we also get a percentage of how much code were actually testing.
![](images/22a3c-1jidr3-zogqapfumc0ltmq.png)
Real neat-o.
### Robots check things so you dont have to
> **You can use a CI/CD platform to check your code automatically.**
The previously mentioned Rails app we maintain every day has to have some sort of rigorous standard so that our code continues to be awesome. We use [Rubocop](https://github.com/bbatsov/rubocop) to make sure that we follow the [Ruby style guide made by the community](https://github.com/bbatsov/ruby-style-guide) in all of our Ruby/Rails projects.
<figure>
![](images/5c6f2-0bebwajr462xoi5of.png)
<figcaption>
“Role models are important.”Robocop
</figcaption>
</figure>
As I mentioned earlier, we have to run our tests manually on our end, and sometimes we forget. With Rubocop, its the same. We forget to check our code _often_. This sometimes leads to us committing things that arent in line with the rest of our code, which is bad.
<figure>
![](images/7bef4-1ycdnl3s6-wszvumig5mxwq.png)
<figcaption>
aesthetically pleasing
</figcaption>
</figure>
Luckily, weve set up our CI/CD platform to run Rubocop right after RSpec. If something isnt up to standard, the build fails, and we dont ship it until its fixed. Its a great way of making sure you write awesome code.
### Robots tell you that you messed up (so you dont have to)
So, lets say you get your CI/CD provider setup. Issue is, you have to wait for every build to pass, and that wastes time… you have other things you need to be doing instead, right? You look away and you forget about the build failing… and you think to yourself,
> “Wouldnt it be great if I could receive notifications for my builds in the chat client Im using so I can continue working without having to worry about checking on it?”
#### _WELL, DO I HAVE SOME GOOD NEWS FOR YOU._
A _lot_ of CI/CD providers Ive seen these days have integrations for Slack ([which you should be using, if you didnt know](https://stories.devacademy.la/why-slack-is-the-best-chat-platform-for-your-team-a13cd07881#.aib4m24zn)).
In our Slack team we get messages when our builds have completed. These can either be passing… or failing. When our builds fail, we normally laugh at each other about it:
<figure>
![](images/984e9-1l0cajknakdfkovy_pssrww.png)
<figcaption>
#Mal[Kattya](https://medium.com/u/7cd86522af8d)
</figcaption>
</figure>
…And when our build passes, we congratulate each other for fixing it!
<figure>
![](images/48f0a-11axerx_-slkjx8ygcfnllg.png)
<figcaption>
#Bien[Kattya](https://medium.com/u/7cd86522af8d)
</figcaption>
</figure>
This helps us know the state of all of our projects without having to leave Slack, and lets us know our personal progress. Since all the build logs are shared in our team, we can help each other out, too!
### Robots ship it automatically
We use Heroku for our apps. We used to deploy our application every time we made a new commit to master, and that got really boring really quickly. We couldnt just push code immediately to production, we had to test it out manually.
So, guess what we did after we added all of the other cool continuous deployment stuff?
We turned this on:
<figure>
![](images/9764d-14jwe6bqkw5xiphtdazpepa.png)
<figcaption>
Whats this button do?
</figcaption>
</figure>
One thing to note is the “Wait for CI to pass before deploy” option. This makes sure that our production app always has working tests and is always up to standard, because it checks that our CD build passed.
Awesome, right?
We use GitHub for all of our repos, and most CD providers have some sort of native GitHub support. Most providers even allow you to see if your build is green or not _right in GitHub itself_.
<figure>
![](images/0e4cf-1lbgthzommycrd4nolfyngw.png)
<figcaption>
Ridiculously cool.
</figcaption>
</figure>
### “So, how do I get started?”
We recommend using [Travis CI](https://travis-ci.org). It isnt the only option out there, but its one we use all the time and recommend fully. Its a great place to get familiar with automating tests and code checks. Setup is as easy as pushing a YAML file to your repo. Best of all, its free for open source projects.
Travis CI isnt the only hosted service out there. Heres a few others:
- [Codeship](https://codeship.com/)
- [Circle CI](http://circleci.com/)
- [AppVeyor](https://www.appveyor.com/)
Whats most important is that you get something thats right for you. CI/CD is essential to coding these days. Why?
> Continually deploying your code into production helps push features out faster and gets work done quicker, which makes everyone happier.
No more waiting to check if your code works or any other tests you need to do. Once you automate everything once and get it working right, you have less things to worry about in general.
Thats more time for you sit back, relax, and take it easy.
<figure>
![](images/24746-0bg6y9lt7jobrkjqr.jpg)
<figcaption>
“Ill ship it tomorrow…”
</figcaption>
</figure>
Pretty cool, right?
<figure>
![](images/4ae54-18x4u4q_avsogffnughqkaa.png)
<figcaption>
Just do it. You know you want to. ❤
</figcaption>
</figure>

View file

@ -1,212 +0,0 @@
---
title: "[old] why slack is the best chat platform for your team"
date: "2016-07-22"
tags:
- "communication"
- "english"
- "slack"
- "startup"
- "team"
---
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from 2016.
<figure>
![](images/f1721-1sppqsgpviugqzv4n1bpnsq.png)
<figcaption>
These symbols, what could they mean
</figcaption>
</figure>
#### And why we use it so much
Its no secret we use [Slack](https://medium.com/u/26d90a99f605) here at [devAcademy](https://medium.com/u/e90784f3811e). In fact, we _want_ you to know we use Slack. Its an indispensable tool for our team, since we need to communicate on the go, wherever we are. Honestly, I dont think we would even be as productive as we are without Slack and the awesome community behind it. Here are the reasons why we love it so much. ❤
#### An instant message is worth a thousand spoken words
> Slack helps us communicate better.
Even though at times were two feet away from each other at devHouse, we chat constantly. There are ways to specifically emphasize your words so your meaning isnt lost, especially with the Markdown support Slack has.
Some people will argue that instant messaging tears people apart. Simple text on a screen cant convey the same amount of information that spoken word can. They have a pointit cant. But what instant messaging gives us is a way to express ideas and communicate with people halfway across the world within seconds. A skilled instant message user can both send and receive messages that convey just the right amount of feeling and emotion to incite a response.
<figure>
![](images/6074f-1j9z-bjp7bhirfqnuj_gvhw.png)
<figcaption>
See? Emphasis.
</figcaption>
</figure>
For people like me, who are growing up in the age of instant message platforms, we prefer instant messaging to normal speech. Why? It helps us speak when our physical voices arent enough. Platforms like Twitter, Facebook and _\[coughs\]_ Medium are giving people who didnt have a voice before a place to share ideas and grow their own community.
> Your company needs their own internal social network to share their ideas and feel empowered within their group of peers.
This is where Slack steps in. By using Slack, your company can have a better sense of unity and a more equal sense of communication. No formal company letters. No dumb corporate meetings. No tedious emails. Just chat with your coworkers. Send a funny joke to your boss. Chat about something you need help with in a public channel. Relax.
Work can be fun, right?
#### Smile for the chat log
> Slack helps grow company culture.
Slack helps us grow our companys culture by providing a fun environment for us to interact in without having to sound too formal. Slack even provides you with a **#random** channel by default. This helps promote a lighthearted communication environment for teams, giving you an incentive to share that funny cat video you found to put a smile on your team members faces.
Slack can help you interact with your team in a fun, enjoyable way instead of sounding like corporate robots all the time. Fun quips and a joyful chat log help promote a happy company workflow. Im not too sure about the technical business jargon behind all of that, but I think we can all agree that its pretty important.
https://twitter.com/that\_taco\_guy/status/747582258148745216
After reading this, you should look at [this great article](https://medium.com/@j_henches/how-to-turn-followers-into-die-hard-fans-try-sounding-like-a-human-38ca164e8973#.3rmzews28) by [Julie Henches](https://medium.com/u/593ab75f38f5). She says something which is really nails what were all about at [devAcademy](https://medium.com/u/e90784f3811e):
> Are you a robot? If not, dont make yourself sound like one.
Your company should really apply this in every aspect, not just marketing. Sounding like a robot in todays day and age doesnt cut it, and Im 100% sure that your team members _hate_ being treated like another piece of a puzzle instead of an actual human being. Your team needs to be sold on the idea that your company isnt a set of trademarks and legal documentsits a living, breathing entity that they want to be a part of. Slack helps us out with this by providing a comfortable, secure environment to talk about anything. You can mention someone, send them something and get instant feedback in an organized, natural and organic way.
#### Sharing information in the instant messaging age
> Slack helps you share information.
This probably sounds silly to you. Of _course_ you share information through chat messages. Isnt that the whole point? But when you take a moment to step back and really take a look at how Slack and other instant messaging platforms work, you get to really see the big picture behind it all. Each message you send is data that can be searched through and looked up with a few keystrokes. Anything shared in a message can be starred in Slack, so you can look it up for later use.
<figure>
![](images/46342-1p6gbujpr8ua3apmkc-ylpw.png)
<figcaption>
I should check this out later…
</figcaption>
</figure>
If youre as busy as we are, its much easier to write something down where you can be reminded of it later instead of listening to a whole bunch of people yap at you all at once. Its where instant messaging really shinesmany people can be talking at once without having to pause or slow down. Messages can be as long or as short as youd like, and you can have long, meaningful discussions that can be interactive and not just one sided. Slack makes this experience fun and exciting by adding reactions to your posts. This makes everything more lighthearted by letting everyone know your feelings on what you said.
These can either be positive…
<figure>
![](images/f7364-12ttsipwkypoagxgd4vl_mw.png)
<figcaption>
Congrats, [Lennon](https://medium.com/u/57f86eb26cec)!
</figcaption>
</figure>
…or negative…
<figure>
![](images/942ed-1g21jncath2jou4lzsfzx8g.png)
<figcaption>
Get your head in the game, [victor](https://medium.com/u/97ee2c25d230).
</figcaption>
</figure>
…or somewhere in between.
<figure>
![](images/a1fff-1v3m4ymtdgspt_uutrvwwla.png)
<figcaption>
Were all confused as to how [Giancarlos](https://medium.com/u/69cefb0fedff) doesnt play Guitar Hero.
</figcaption>
</figure>
You can even add your own emojis, which is pretty awesome.
<figure>
![](images/0d4f9-1czcbts6439ovbpnoxq6dtq.png)
<figcaption>
Have something to tell us, [Kattya](https://medium.com/u/7cd86522af8d)?
</figcaption>
</figure>
#### Anytime, anywhere
> Slack is available whenever and wherever you are.
Do you have access to a web browser? You can use Slack. Their native apps are also pretty awesome, and their design guidelines make sure that you can keep up with whats happening even if youre on a smartphone, a laptop or your desktop computer. Im pretty sure if I shoved a Raspberry Pi into a toaster, Id be able to open Slack on it.
<figure>
![](images/3b7b9-1urpwggrsjr17scdxmbzqlw.png)
<figcaption>
:v
</figcaption>
</figure>
Im going to gush like a design nerd for a moment, though. Slacks UI is gorgeous. Their slick, smooth design makes me want to use their chat service forever. Another thing? Functionality. All of their apps make sure that you never feel left out on any features on any device. Ive never had to say “Ill have to wait until I get on a different device to do this”I can just do it. Thats an amazing thing to be able to say. I havent found something in Slack that I didnt like, and Im pretty picky!
#### I heard you like apps, so we put an app in your app so you can do things while you do things
> Slack provides you with a wide variety of integrated apps.
Now, Slack cant provide you with absolutely everything. There are some things that theyre just not good at. Theyre busy working on making their own chat platform better and cant possibly add all the specific things youd like just for your team. How do they solve this problem, though? Integrations.
[Integrations](https://slack.com/apps) are like little mini-apps inside of Slack that run without having to install anything on your machine. They can do a whole bunch of stuff straight from Slack without having to switch tabs, which is super useful and gives your team a sense of transparency.
You say youre going to make a card on Trello to remind yourself to upgrade the platform to Rails 5? [Theres a Slack app for that.](https://slack.com/apps/A074YH40Z-trello)
![](images/743ae-1hlggolcdw_znedgi0ggbka.png)
You want to know whats happening on your GitHub repositories without having to tab over to GitHub itself? [Theres a Slack app for that, too.](https://slack.com/apps/A0F7YS2SX-github)
![](images/28572-1allrtgnpiuozf3e8d6vpfw.png)
Sometimes, though, youll find that theres some functionality that you cant seem to achieve with a simple integration install. Slack has that covered for you, too. [Slacks API](https://api.slack.com/) is simple to use and theres a few great existing libraries that let you create your own awesome integrations for Slack. Were working on [PiscoBot](https://github.com/devacademyla/PiscoBot) here at devAcademy as our own homegrown custom integration, and its a lot of fun! It helps us create our own organic company environment in what could be an otherwise bland chat room.
(You can read more about why we think bots are amazing [here](https://medium.com/devacademy-stories/you-need-a-chat-bot-right-now-and-heres-why-cbbe5a69367e#.7i2z40upt).)
#### Long story short…
> Slack is great. You should use it. It gives you the tools you need to make a good team a great team.
Now go out and make something awesome.
_(_**_Note_**_: These are entirely my own opinions. I wasnt paid by Slack to advertise their product but hey a few dollars coming my way wouldnt be bad, so hit me up,_ [_Slack_](https://medium.com/u/26d90a99f605)_. But seriously, though, Slack is great.)_
* * *
Dont forget to recommend this post to others if you enjoyed it. ❤
<figure>
![](images/755a8-1xs_n7ruqrbe-eszcs4oxrg.gif)
<figcaption>
help a brother out
</figcaption>
</figure>

View file

@ -1,72 +0,0 @@
---
title: "[old] why working remotely is really awesome"
date: "2016-07-12"
tags:
- "culture"
- "productivity"
- "remote-working"
- "startup"
- "team"
---
#### And why it kinda sucks
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from 2016.
>
> i no longer work for devacademy, and i think they dissolved in 2019?
Ive been working at [devAcademy](https://devacademy.la/) since December. Im not going to lie, I love working for dev. Ill swear up and down that I enjoy making things for and with the company. Its not because of all the cool benefits Im getting from working with them or the paycheck.
> Its because Im part of a team.
<figure>
![](images/7a4d2-123eiosnd_e6ajoegm2hg2g.jpeg)
<figcaption>
This is supposed to be an image related to working remotely, right? Im not good at marketing.
</figcaption>
</figure>
#### A long, long time ago, in a college far, far away…
I met [Lennon Shimokawa](https://medium.com/u/57f86eb26cec) while he was giving a Rails course at my college. I was pretty stoked about learning more about devAcademy when he gave us the hands on course.
Why? He spoke my language.
> Most of us here at dev speak the same language: **fluent computer nerd.**
We all talk about open source projects we like and how we can make devAcademy better by sharing dumb, nerdy ideas together.
An indispensable tool that has helped us in all of our communication is [Slack](https://slack.com/). I could probably write an entire post about Slack (and I probably will). Its one of the best tools for any team, ever. Even if people on our team are less than 5 feet away from each other, theyll chat through Slack. Why? Slack helps us generate a company culture thats not only inside of the office, but reaches to a wider range of people. We use little tools like [Hey Taco!](https://medium.com/u/32fafd911287) and [HowdyAI](https://howdy.ai) to enhance our happiness and productivity.
#### A global reach for a local company
We also use tools like GitHub, Hubstaff and Trello to make sure we have accountability, reliability and a global reach when it comes to using agile development methodologies. It really helps people like me who arent there physically to see whats going on. All of our code stays on GitHub and we make sure to work with our Trello cards religiously so that absolutely everyone is on the same page. If I want to see what people are working on, I dont have to waste their time asking them, I can just take a gander at the Trello board and know whats going on in minutes.
Im not going to lie and say everything is perfect. Not being in person at my job feels kind of lonely sometimes. Not everyone is on Slack all the time, and we all have our personal lives at the end of the day. I also have weird, erratic work times due to me studying full time, and that doesnt help much. Some concepts and phrases are lost in translation. But even through all of that, I dont feel like Im alienated even though [Im a thousand miles away from our office in Ica](https://www.google.com.ec/maps/dir/ITSAE-CADE/devAcademy,+Eucaliptos,+Ica,+Peru/@-6.7283223,-81.5527133,6z/data=!4m13!4m12!1m5!1m1!1s0x91d536e05e4dd017:0x32ef7dc0d58dc330!2m2!1d-79.2477385!2d-0.3485003!1m5!1m1!1s0x9110e2d62ddfd3c9:0xe6508f6de22f8bc8!2m2!1d-75.749372!2d-14.046913?hl=en). Its why we even use Slack in the first place.
> At devAcademy we think globally, instead of just having our goals on our own local market.
Using tools that have a wider reach and that are easily scalable lets our company grow easily and help us reach a wider audience.
I worked for devAcademy for two months before I saw Lennon again in person. By then I felt like I was a part of something biggersomething I could be proud of and tell everyone I know about happily.
When I visited devHouse in February, I didnt felt like I was stepping into an alien office environment with people I didnt know.
<figure>
![](https://cdn-images-1.medium.com/max/800/0*LXdUE_xPCmsjq9tD.)
<figcaption>
Take a wild guess as to who I am
</figcaption>
</figure>
> I felt like I was at home.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

View file

@ -1,76 +0,0 @@
---
title: "[old] you need a chat bot right now, and heres why"
date: "2016-07-05"
tags:
- "bots"
- "chatbots"
- "communication"
- "messaging"
- "programming"
---
> **disclaimer:** this post is really old, from when i first started writing technical articles. it's from 2016.
Lets be real for a second here… I _love_ conveniently automated things. I love when programs work for me instead of having to set them up (or beat them into submission). When great ideas and great code work hand in hand, they make great software that just _works_. One of the greatest ideas thats come out recently is using software through a chat interface, or as you probably know them, **chat bots.**
<figure>
![](images/88ad3-0uj0w1imzdpa0onpb.jpg)
<figcaption>
Photo credit: [jeffedoe](https://www.flickr.com/photos/jeffedoe/506027963/) / [CC BY-ND](http://creativecommons.org/licenses/by-nd/2.0/)
</figcaption>
</figure>
#### I, for one, welcome our new talkative overlords
We here at dev are pretty certain that chat bots are the future, and were not the only ones that do.
> Chat apps will come to be thought of as the new browsers; bots will be the new websites. This is the beginning of a new internet.
- [Ted Livingston](https://medium.com/u/2d041e2f8c3), [The Future of Chat Isnt AI](https://medium.com/@tedlivingston/the-future-of-chat-isn-t-ai-b07f65bc252)
The people at [Kik](https://medium.com/@tedlivingston/the-future-of-chat-isn-t-ai-b07f65bc252#.wbcdlnljn), [Facebook](https://developers.facebook.com/docs/messenger-platform), [Slack](https://api.slack.com/bot-users), [Discord](https://discordapp.com/developers/docs/intro) and even [Skype](https://developer.microsoft.com/en-us/skype/bots) know that the people want chat bots. Its one of the biggest untapped markets, since we all use IMs to communicate with each other these days. Being able to do things directly in chat is a must-have for any company these days.
End Users love having work done for them. We dont like to move to other places to do things. We might as well not do them if we have to click on something. Having a place where you can do just about anything through chat bots is a reason to stay there and chat. A bot wont judge or challenge you. It does whatever its made to do, and hopefully does it well.
#### So, what are we doing about it?
Were are currently working on rewriting a bot I made for our Slack team here at devAcademy called [PiscoBot](https://github.com/devacademyla/piscobot). Creating an accessible user interface through chat sounds hard, but its actually pretty easy (and _definitely_ worth it).
<figure>
![](images/1eb4c-167zvqsrqjpksiotefydvga.png)
<figcaption>
We also give out shots of Pisco as a reward
</figcaption>
</figure>
For example, we have a command in PiscoBot allow us to check whos worked the most on Hubstaff. Its a conversation starter! Your can use bot replies as an icebreaker to talk about any topic you want. We use it to discuss how many hours our team is working and how we can coordinate our working hours better.
Being able to search for a Pokémon directly in chat isnt a dumb, silly feature. It actually helps strengthen and grow an otherwise stale and disconnected community. By being able to share common interests and make communication easier and more friendly, your team will grow naturally. Be it at your workplace, with your group of friends or even with your family, chat bots can help you more than you can imagine.
<figure>
![](images/0e015-1nx3eb5lbb5bzxekqpvwp7w.png)
<figcaption>
Using a Magic 8 Ball digitally is much easier than using one IRL.
</figcaption>
</figure>
If you use Slack, theres our own home grown [PiscoBot](http://github.com/devacademyla/piscobot), which is open source. Theres also other bots that are easy to set up and maintain, like Hubot, by GitHub themselves. Test some out, and find one thats best for your team!
You could even make one yourself! For Slack, Twilio and Facebook theres the awesome [Botkit](https://github.com/howdyai/botkit) for NodeJS, which was made with Slack in mind. It has pretty neat conversation code which allows you to make your own bot _very_ easily. Theres loads of other libraries out there for making your own bot user, so find which one is best for you!
We here at dev wholeheartedly recommend setting up a chat bot for your team or community, wherever you are. Its helped us grow a lot; not only as a workplace, but as a community. Were pretty sure it can help you, too.

View file

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View file

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View file

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB