In this episode, Kevin and Layne talk about music, tech support, the tech bootcamp experience, and receiving responses to job applications 2+ years after the fact! Then they play "What's my .vimrc line?", where Kevin reopens old wounds. Then they accidentally turn the show into "British Isles Surname Podcast" for awhile! Amazing!
I was featured on my favorite podcast a while back, Building Programmers. I encourage you all to take a listen to all of his episodes about what it’s like working in tech, how different people got started and then play a game with Kevin. It was ahhhhmazing.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
From the dev.to() community. Sharing ideas that makes us all better developers.
I was recently a contributor to the dev.to() community’s series: Nevertheless, she coded. I talked about how I got into coding, how I somehow make my way through life just by saying “eh, why not?”, and what it’s been like so far. I loved this series and definitely binge read all of the other posts.
My hackathon team, with a fellow former gSchool, created a fun project called Eatlun.ch for Slashrocket’s hackathon and we were voted number one by the Slashrocket community! Our project was a React on Rails app that will let you choose a location and max price and it will choose your lunch destination for you. We nearly had it working to choose a menu item with Locu’s API but ran out of time. I’d love to work on this project again and to make it into a Slack robot, just for fun.
Schools that offer accelerated training in digital skills are drawing more and more “career changers,” and graduates can make six-figure base salaries.
Learning to code was one of the best decisions I’ve ever made.
Last month, I attended GoRuCo in New York City, NY.
Here are a few of my favorite talks:
Nadia Odunayo - Pivotal Labs in London, UK
Title: Playing Games in the Clouds
Her talk went through Game Theory, a couple of example game examples and how you can adapt the rules of Game Theory to efficiently allocate resources and load balancing for distributed systems. The two main theories that she referenced were Bargaining Strategy Theory and Second Place Auction Theory. Bargaining Strategy Theory, proposed by John Nash, asks: How will surplus be split between two agents? For distributed system, Bargaining Theory can be used to think about how resources should be allocated within a distributed system to optimally minimize overall execution time. Second Place Auction Theory, developed by William Vickrey, asks: How should an agent bid? It is the dominant strategy for agents to bid truthfully regardless what the other agents bid. For computers, that means that they should truthfully report their capabilities so we can distribute jobs based on accurate representations of the resources available in a system. During her talk, she recommended reading Thinking Strategically.
Eileen Uchitelle - Basecamp
Title: How to Performance
Takeaway: Always be benchmarking First, get a baseline: Time is not a good baseline for performance testing since it can vary. One way to get a baseline is by using the benchmark-ips gem. This gem will tell you how many times the specified code can run in one second. The more iterations, the faster your code is. Next, find the time-sucking culprits.
A couple of gems that can help track down what’s slowing down your code. You can use RubyProf to profile your code. While RubyProf is good at showing the big picture, the data can be a bit overwhelming. Another gem that can help is the StackProf gem. It is similar to RubyProf but offers more focused profiling. It can help pinpoint problems quickly but difficult to show problems in dynamic methods.
When working with performance, it’s easy to think that caching all the things will solve all of your problems but if you’re able to speed up your code without caching, that should be your first choice.
If you notice that a lot of time is being spent in garbage collection, the AllocationTracer gem can help show how many objects are being created, how old the objects are and how much memory the objects are taking up. Before you freeze anything or make any changes, prove the allocations are the bottleneck.
Nate Berkopec
Title: 100ms to glass with Rails 5 and Turbolinks
To glass means from click to stable state above the fold. Chrome timeline: Most of the time spent in a typical Rails app is from scripting (everything that’s in $(‘document’).ready()) and then re-rendering after executing all of the scripts. Some ways that people speed up their apps are:
Speed up server response time: Caching
Traditional way: Send JSON over the wire to give the client logic to update the view.
New way: View over the wire using Turbolinks 3 (for new projects) or PJAX (for existing projects). Replace the document or part of the document you have with the document you just got.
Rack-Mini-Profiler gem
Chrome timeline to see what’s slowing you down
Don’t redirect after POST - just go straight to response
render :index, change: “stuff”
Godfrey Chan
Title: Dropping down to the metal
He gave a funny talk about writing a JavaScript gem to run JS code in Ruby. Blurb: “As much as we love writing Ruby, when you need to get really close to the metal, you have no choice but to use JavaScript. With this gem, Rubyists can finally harness the raw power of their machines by programming in JavaScript syntax right inside their Ruby applications.” I especially enjoyed his talk because I've been reading Ruby Under A Microscope and it solidified some ideas I had about what Ruby is evaluating when you write your code. Side note: PDX peeps, he’s speaking at next week’s PDX Ruby meetup and just moved to Portland.
Rachel Warbelow
Title: (Strategies to Prevent) Common pitfalls of junior developers
Problem 1: Lack of Structure
Develop a long term plan for them
Answer questions like what are the minimal essential skills that this developer needs to know right now to become a productive member of our team? What should they be able to do by next week, next month and next year and how are we going to get there?
Create structure for pairing
Pairing juniors together can be helpful since they come from a similar understanding and can help build each other’s missing knowledge gaps.
Also make sure to schedule time for them to pair with seniors on harder problems.
Give consistent feedback
One on ones can be helpful.
Allow them to not only get code reviews but give feedback on other people’s code.
Problem 2: Imposter Syndrome
Let them know that it’s fine to ask a question
Set realistic expectations
Let them see senior people struggle
Problem 3: Surface Level Understanding
Use proven teaching techniques
Whiteboarding, analogies
Provide projects to expand their knowledge
As a newbie myself, I appreciated the steps she listed out and I think it could be of great use to us as we consider on-boarding juniors in the future.
Other talks that I recommend watching are Simon Eskilden’s Building and Testing Resilient Applications, Aaron Patterson’s (who will also be speaking at PDX Ruby next week) keynote Code Required and Lisa van Gelder’s Great Caching Disasters.
After the conference, all the attendees headed over to Chelsea Piers for a boat party to socialize and check out the Statue of Liberty and the Brooklyn Bridge. I ran into a few Coloradans that I knew from other schools and meet-ups that I attended which was pretty cool.
Besides the conference, I was able to catch up with old friends and check out how fancy (and expensive! $6 for coffee now??? Yikes) my old neighborhood in Brooklyn has become.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
My team won 2nd place at the We Code Hackathon that Puppet Labs and Nike put on this weekend.
We made a job searching app that tries to bring together finding a job that fits your skills but also fits your life. We used Yelp, Google Maps and Glassdoor APIs to find reviews for local childcare, transit directions and reviews from current employees. We pulled the job listings by parsing XML from StackOverflow’s jobs RSS feed. You can check it out here: https://wecodehackathon.herokuapp.com/
Working together with a team of vastly different skills is extremely hard so I’m glad we were able to pull it off at the very end. If nothing else, it was a great learning experience.
I was given the opportunity to tell USA Today what my experience has been as a woman in tech so far. Learning to code has changed my life in many ways and it was a pleasure to share that with others.
I hope it will show other women that switching careers, learning new skills and pursuing happiness in your life by straying from your current path is totally doable and worth it.
The report released by the American Association of University Women about the lack of diversity in tech today was sobering and will hopefully push others to contribute and push for the changes needed in our industry.
This week featured another O(n²) algorithm: insertion sort.
Like bubblesort which I discussed last week, insertion sort is an O(n²) sorting function that moves each element one at a time into the proper position.
Insertion sort does exactly what the name says, it inserts one element at a time into the previously sorted part of the array, moving elements of a higher value towards the end of the array as needed.
The first element of the unsorted array is always considered to be sorted and it steps through one at a time adding another element to the sorted array, comparing and swapping until the inner array is sorted before moving onto the next element in the array.
You can view the code below or check it out on Github.
def insertion_sort(ary) for i in 1..(ary.length)-1 (i-1).downto(0) do |j| if ary[j] > ary[j+1] ary[j], ary[j+1] = ary[j+1], ary[j] end end end ary end
As we get closer to finishing gSchool, a few of us decided to start a study group to work on languages, algorithms, interview questions and other topics that we haven't learned during class yet.
Today, we had a special guest come in to help us talk through, whiteboard and code algorithms. This week's algorithm was bubble sort.
First we talked through what the algorithm did to sort an array, next we moved onto sudo coding it on the whiteboard. Lastly, we wrote a quick program to help us translate what we just learned to Ruby. It could definitely use a bit of refactoring but for now, it works.
class Numbers def bubble_sort(array) L = array.length while L >= 0 I = 0 swapped = false while I < (L-1) if array[I] > array[I + 1] array[I], array[I+1] = array[I+1], array[I] swapped = true end I = I + 1 end break if swapped == false L = L -1 end array end end
You can check out the full code here. I'll probably update it for each algorithm and exercise we go through.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
Last night, we got the opportunity to show off the apps we've spent the last month working on. I presented my app, WalkSafe.ly, which I've built to help people find the safest walking route using crime data. The presentations ended up being tons of fun and many people came up afterwards to discuss the next steps I'd like to take with my app.
They also offered up some really great ideas that I would love to implement in the next phases of my project such as a deadman switch, GPS tracking, make it mobile friendly, and the ability to share your route with a friend so they know you got to your destination safely.
If you'd like to check out my app, phase one is up and running at: safe-walk.herokuapp.com
The ObjectSpace module contains a number of routines that interact with the garbage collection facility and allow you to traverse all living objects with an iterator.
ObjectSpace also provides support for object finalizers, procs that will be called when a specific object is about to be destroyed by garbage collection.
Garbage Collectors
A garbage collector is a construct in languages with managed memory.
It is the thing that manages the memory.
Essentially, it's the job of the garbage collector to figure out when a piece of memory that has been allocated is no longer needed, and deallocate it.
Why do you need to keep track of this?
When you're using a language with a garbage collector, there are certain things you might want to do:
Run a method whenever a piece of memory is freed
Count all instances of a class that are currently taking up memory
Count all instances of all classes
ObjectSpace gives you access to do things of this nature. Essentially, it's a way to get access to anything and everything that's currently using allocated memory.
One of the many advantages of dynamic languages such as Ruby is the ability to introspect—to examine aspects of the program from within the program itself.
Simple explanation: we use introspection to examine parts of our programs that aren't normally visible from where we stand.
What does this allow us to learn about our program?
I can't believe it's already August! Since I last wrote, we have started learning Rails, attended Develop Denver where my hackathon team used an API for the first time to make an app that finds beer related gifs, went rock climbing and many other things. This summer is just flying by.
Coming up soon, we'll cover Javascript, I'll go on a weekend kayaking trip with the Bold Betties, I'll visit Oklahoma for a long weekend, and I'll move to a new apartment when Breannan finally gets here.
I got a surprise lesson in web security today after one of my websites was attacked by bots leaving thousands and thousands of comments pushing my bandwidth over the limit and crashing my sites. Thanks, French bots. Yeah, that's right, I know where you're from. I really appreciated that.
class Things_I_Understand def self.count count = 0 ObjectSpace.each_object(self) do count += 1 end end end puts "I understand #{Things_I_Understand.count} things right now." # => I understand 0 things right now.
Made it to the end of week 5! This week actually felt pretty great. We spent the week going over SQL and databases which turned out to be very interesting. This was definitely the first week where I felt like I was starting to understand the topics we're going over.
My pairing partner and I are working on a web app called Fishbook as an exercise. So far in the app, you can register as a new user, log in, see who else is a user, add lists of your favorite fish with their wikipedia pages, and see what fish the other users have added. Sounds totally lame but it's been really fun to put together so far. If you want to check it out and make lists of your favorite fish (which I know you all do), you can visit Fishbook here: http://immense-wave-6838.herokuapp.com/ So far, flounder and goldfish seem to be the most popular fish.
Other things I've done this week: Denver.rb where I listened to a couple talks on TDD by Jeffrey Matthias (@idlehands) and why testing is important and apprenticeships. The apprenticeship talk was by Dave Hoover (@davehoover) from Dev Bootcamp in Chicago discussing his experience establishing apprenticeship programs at the companies he's worked for and what made the programs either successful or unsustainable. Coming to the talk as someone who wants an apprenticeship, it was really interesting to hear about it from the other side. I'm still mulling over what my options are for after gSchool and what I'd like to do but I think that I would be very interested in an apprenticeship, especially if I'll have some time to kill between when I finish and when B finishes school.
Also this week, I finally went out to Boulder to meet up with the ladies at gSchool Boulder for a couple drinks last night. Man, Boulder is really beautiful. It makes me wish I lived there instead of here, too bad I don't have a car. Besides the beauty of the town, meeting the other ladies was fun and it was interesting to hear about the differences between the different cohorts of gSchool. They're further along in their program than we are so it's a great opportunity for us to learn from them and to get a sneak peek of what's coming ahead.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
Beginning of Week 5 - July 4, Visit from B & Sinatra Assessment
I can't believe how quickly gSchool is moving along! Last week was a short week due to the holiday. We mainly focused on sessions, Sinatra, Heroku & Capybara tests. My pairing partner and I labored over our Sinatra app for hours but finally made it work, thank God.
Onto happier things, yesterday was my 3 year anniversary with my boyfriend. He came into town to visit for the holiday weekend. He ended up being delayed by a day due to SW airlines canceling all the flights on the third because of storms. Super annoying! We spent the weekend hanging with friends, doing the full walking tour of Denver, eating to our hearts' content and catching up after a month apart. It was really hard saying goodbye this morning but the lucky jerk is off to the South of France for a week, not that I'm jealous or anything!
This week, we're moving onto SQL, CRUD & databases. After a small boost in confidence from this morning's assessment over Sinatra & Sessions, I'm feeling pretty good about this week. It'll be nice to get back into the swing of things and just keep working my ass off towards my goals.
This week, we moved from all Ruby all the time to adding in some new elements. We briefly touched on HTML & CSS early in the week before having our brains completely overloaded with Sinatra & Heroku yesterday. We launched our first web apps which was pretty interesting. I have to admit that the Sinatra day was very overwhelming and hard to understand but I think that once we go over it some more, it will be easier to grasp. I want post the link to the app I made but it basically was a sortable list of pugs and a gif of Ron Swanson throwing his computer in the garbage.
I think that we're all struggling with the concept that we won't ever be able to know everything that there is to know. In school, you get used to learning a subject, taking tests, and feeling pretty confident about the amount you know. With this, everything we learn makes us realize that there are infinite other things we can also learn and do. It's exciting and scary all at the same time.
This weekend is looking to be pretty fun. I think I'm meeting up with a friend from high school to go hiking and to taco festival. Mmm tacos. We also have a study group & nerdy book club on Sunday at school which is hopefully pretty helpful.
Time to go bang my head on the desk trying to learn Sinatra again!