Saturday, April 6, 2013

DIY Hardware Hack Day

Wanted to write about the Hack Weekend we had here in NYC a month-or-so ago, it was my first time putting one together, and I thought it would be good to share wisdom.


My reason for putting the weekend together was selfish, I wanted to learn more about hardware hacking. Our Christmas sweater was my first experience and it was super fun. So, I wanted to take up another project myself. 


I'm lucky enough to live in NYC, there are a bunch of experts that live here. Rick Waldron made Johnny-Five, and Francis Gulotta is Levo League's own pro. I asked them, and a few other people, if they wanted to help put a weekend together.


Basically we just put an Eventbrite page together and charged $30. We spread the word via Twitter and Emails, which sold us about 30 tickets. We charged because we didn't want sponsors, so the $30 was for food. 


Levo League donated the space for the weekend. Day of we ordered some food, and people arrived around 11-12.


Rick gave a great talk about Johnny-five (which is an amazing library that makes JS and Arduino easy as pie) to kick us off and then we went about our weekend. 


An environment where people are creating is awesome. Everyone spent the weekend buzzing. We brought tools and had some extra parts but people made a few runs to the hardware store to pick up some things. 


At the end of the weekend we did demo time to show off what we made, here are some really cool ones. 


Here is what I made, this LED changes colors based on your tweets. 


 


 


Rick made a  robot that that moves when he moves using the Kinect


 


This glove changes the volume on your laptop


 


The coolest thing to come out of the weekend was dorby our Levo League robot that opens the front door via the internet. 



2013-02-17 20.27.17


 


Our weekend was a great time, and we plan on doing it again soon. LMK if you are interested in joining. 



Sunday, October 7, 2012

In which I answer all of the questions

This blog post has been in the corners of my mind and nipping at my ankles for a while. 


Please don't linkbait this, or pick comment fights. This isn't for upvotes, or HN fame. 


Many people I meet ask me a varient on this question "I understand we want more women in technology, but why?" It's a great question, and not at all something we should be offended by. Often men are afraid to ask questions like this for fear there will be backlash, I think that fear can lead to stiffling of an important conversation.


Frankly, the internet is thriving without women building it, why should that change? 


I put together the following answer for a Quora thread, I thought it would be also advantageous to put it here, so I (and maybe you) can reference it in the future. 


I think the reason why we need more women building technology is threefold, I will outline below. 



You will notice I stay away from generalizations like "women are better at xyz," because such generalizations imply that we therefore must be worse at other things that men may be able to do better. I don't think approching the argument that way is productive. 




Diversity leads to better products and results

As illustrated in the Cornell study included below and many more to be found online, diversity improves performance, morale, and end product. More women engineers means building a better internet, and improving software that can service society as a whole. Building a better internet is why I started doing software development in the first place, I think we can all agree this is of utmost importance.









The internet is the largest recording of human history ever built 

Right now the architecture for that platform is being built disproportionally by white and asian males. You've heard the phrase "he who writes history makes history"? We don't yet know how this will affect future generations. 





How can architecture be decidedly male? I like to refer to the anecdotal story of the Apple Store glass stairs. While visually appealing one unforeseen consequence to their design was the large groups of strange men that spend hours each day sitting under them looking up. As a women, the first time I saw them I thought "thank god I'm not wearing a skirt today." Such considerations were not taken in designing these stairs, I think it's probable, if not easily predictable, that in a few years we will see such holes in the design of the web. 





Women in 10 years need to be able to provide for themselves, and their families

Now, this reason is purely selfish on the part of women, but we all have mothers, and sisters, so I hope we can relate. 





This year there are 6 million information technology jobs in the US, up from 628,600 in 1987 then 1.34 million in 1997. Right now jobs in technology have half the unemployment rate of the rest of the workforce. There is no sign this will change anytime soon. If growth continues at the current rate, it will not be long until women will not be able to sustain themselves if not involved in a technical field. 





We have to start educating young girls about this now, or they may ultimately become the poorest demographic among us. 










I hope this has been educational for you, if this is something that you have debated. If you have any thoughts please share. 


Sunday, July 29, 2012

Teaching a Man to Fish With a Computer




D80kJ7o


Last week I had the privilege of traveling to the Dominican Republic with the organization Handfuls

 of Hope. We went down to bring food, clothing, and care to some of the poorest villages about an 

hour outside of Santo Domingo. We also built a roof, and did a lot of painting (photo above is me 

after a full day's work painting).

 

The trip was an amazing experience, it was incredibly humbling how helpful and happy the 

children were at the village. We think that all our stuff provides us with happiness, but in reality it 

provides us with stress and obligation. After months planted behind my machine it was lovely to

 be able to spend my days working outside. I even did construction and help put a roof on one of 

the buildings in the village. 


2012-07-20 10.56.39


The folks there live without running water, mostly (a few homes had it). They only have electricity 

for a few hours a day. I was spending some time chatting while painting a fence, and I learned 

from one of the women that put the trip together that in the school (a small school with several 

classrooms holding 10 or so students) there was a computers class that was held weekly. 



Excited, I asked if I could see it. So, I stopped by and saw 10 adults in a classroom with 1 

computer that a teacher was working with. There was a larger monitor they were all watching on 

and learning from. From what I could see, a specific program was being taught on a Windows box,

 it could have been anything, I didn't get to ask. I got to say "Hello," the experience was wonderful

 and it was great to see that even in this place, where many people don't own much more than

 their clothes, and this is their Wikipedia:


2012-07-20 10.56.00


and they were being taught how to use a computer. 



All that got me thinking, what is the most important thing to teach to adults who are seeing a 

computer for the first time? What is the fastest way to get them from illiterate to a place where 

they can be making money from the web like the rest of us? 



The internet is a perfect environment for them to thrive. The decentralization of 

commerce means that you don't have to own a storefront on Park Ave to make serious cash, or 

ideally, feed your family. There are many organizations that take homemade crafts from third world

 areas and put them online, however, what about empowering the people to do this themselves? 



I immediately did what I do and broke things down into steps. Step one: find the tools to supply

them.  The first place I looked to send help to this class was One Laptop Per Child to see if I 

could buy some laptops and send them, from their site it appears you can only donate laptops to

the areas they designate (that makes perfect sense for their organization, just doing some 

research). I could buy some netbooks and send them, but would need to come up with a strategy 

to make them provide value, especially with no clear way to get them online. As much fun as 

MS Word and Solitaire are, what could you show them that would turn them into tools that could 

help feed a village?



That brings us to the second step, and that's teaching folks how to fish. The Kahn Academy has 

an offline version of their site (I bet for this very reason), so that's a great place to start. Giving

them the ability to teach themselves the higher maths and sciences is key. In this village, it's 

extremely rare to have anything higher than a middle school education as going to HS costs 

money that they don't have. There is a lot that has to happen after that, and that's where I am lost.

 

Computing played a big role in my trip in general. Below I'm going to post some pictures of the kids

 I hung out with there (taken with my iPad). I was able to communicate with them through this 

offline app from Lonely Planet (and broken HS spanish). They loved my iPad, we played a lot of

Checkers and other games. It was a real study in how technology brings the world together.

 

In the end Girl Develop It donated money to their class to buy tools for the short term. I hope to

 go back next year to teach and by then I'd like to have a helpful strategy, I'm going to continue 

doing research on my end, but if anyone has seen anything like this out there it would be greatly 

appreciated. 

2012-07-20 22.57.44
2012-07-17 12.39.25



Teaching a Man to Fish With a Computer




D80kJ7o


Last week I had the privilege of traveling to the Dominican Republic with the organization Handfuls

 of Hope. We went down to bring food, clothing, and care to some of the poorest villages about an 

hour outside of Santo Domingo. We also built a roof, and did a lot of painting (photo above is me 

after a full day's work painting).

 

The trip was an amazing experience, it was incredibly humbling how helpful and happy the 

children were at the village. We think that all our stuff provides us with happiness, but in reality it 

provides us with stress and obligation. After months planted behind my machine it was lovely to

 be able to spend my days working outside. I even did construction and help put a roof on one of 

the buildings in the village. 


2012-07-20 10.56.39


The folks there live without running water, mostly (a few homes had it). They only have electricity 

for a few hours a day. I was spending some time chatting while painting this fence, and I learned from one of the 

women that put the trip together that in the school (a small school with several classrooms holding

 10 or so students) there was a computers class that was held weekly. 



Excited, I asked if I could see it. So, I stopped by and saw 10 adults in a classroom with 1 

computer that a teacher was working with. There was a larger monitor they were all watching on 

and learning from. From what I could see, a specific program was being taught on a Windows box,

 it could have been anything, I didn't get to ask. I got to say "Hello," the experience was wonderful

 and it was great to see that even in this place, where many people don't own much more than

 their clothes, and this is their Wikipedia 


2012-07-20 10.56.00


they were being taught how to use a computer. 



All that got me thinking, what is the most important thing to teach to adults who are seeing a 

computer for the first time? What is the fastest way to get them from illiterate to a place where 

they can be making money from the web like the rest of us? 

The internet is a perfect environment for them to thrive. The decentralization of 

commerce means that you don't have to own a storefront on Park Ave to make serious cash, or 

ideally, feed your family. There are many organizations that take homemade crafts from third world

 areas and put them online, however, what about empowering the people to do this themselves? 



I immediately did what I do and broke things down into steps. Step one: find the tools to supply

them.  The first place I looked to send help to this class was One Laptop Per Child to see if I 

could buy some laptops and send them, from their site it appears you can only donate laptops to

the areas they designate (that makes perfect sense for their organization, just doing some 

research). I could buy some netbooks and send them, but would need to come up with a strategy 

to make them provide value, especially with no clear way to get them online. As much fun as 

MS Word and Solitaire are, what could you show them that would turn them into tools that could 

help feed a village?



That brings us to the second step, and that's teaching folks how to fish. The Kahn Academy has 

an offline version of their site (I bet for this very reason), so that's a great place to start. Giving

them the ability to teach themselves the higher maths and sciences is key. In this village, it's 

extremely rare to have anything higher than a middle school education as going to HS costs 

money that they don't have. There is a lot that has to happen after that, and that's where I am lost.

 

Computing played a big role in my trip in general. Below I'm going to post some pictures of the kids

 I hung out with there (taken with my iPad). I was able to communicate with them through this 

offline app from Lonely Planet (and broken HS spanish). They loved my iPad, we played a lot of

Checkers and other games. It was a real study in how technology brings the world together.

 

In the end Girl Develop It donated money to their class to buy tools for the short term. I hope to

 go back next year to teach and by then I'd like to have a helpful strategy, I'm going to continue 

doing research on my end, but if anyone has seen anything like this out there it would be greatly 

appreciated. 

2012-07-20 22.57.44
2012-07-17 12.39.25



Sunday, July 8, 2012

On Fashion and Developer Conferences

 



If you have met me in person you know that I tend to wear traditionally girly clothing. Dresses, skirts, sweaters, headbands and the like. 


I have, like, four Zuckerburg costumes. Jeans, sneakers, teeshirt, sometimes hoodies. I never wore them unless I was going to a developer conference or a user group somewhere, that's what I bought them for. I never consciously thought "Sara you are changing who you are in order to fit in," however, that was essentially what I was doing. 


Once I realized what I had been doing I had conflicting emotions. On one hand I wanted to stay true to myself, on the other a girl in a dress at a software conference was going to stick out like a sore thumb. 


Part of getting older for me has been getting more comfortable in my own skin. Part of maturing as a software developer has done the same for me. Sometime around the middle of last year I felt confident enough to start wearing my normal gear to developer events? 


What changed about my experience? Absolutely nothing. No one treated me differently, or made me feel uncomfortable. I've had outstanding conference experiences since. It was all in my head, and I wanted to write about it in case it's in yours too. 

 


 



Thursday, June 21, 2012

My Fluentconf Talk and a GMail keyboard shortcut Extension

 


Fluentconf was great for quite a few reasons, the first being that I love SF, the second being that I had such an amazing time with the people there. It's rare that you get to be around so many people like yourself, and to break off with people you admire and get a concentrated amount of great mentorship is such a great recharger. Super happy for the experience.


I was sad about the fact that I learned from Rebecca Murphey the keynotes were for sale. That's a diservice to the community. Developers get sent to these conferences by their employers to learn more. If the things they are learning are expensive advertisements masked as organic learning opportunities we are swindling them. 


However, besides that, the conference organizers are awesome folks, and the conference in general was well done. Peter Cooper and Brady Forrest were lovely, and it was great to meet them in person. I was on the selection committee, and it was great being able to help choose the talks at the conference, super grateful for the experience. 


I did a talk about browser extensions in GMail. I used Thomas Fuchs' library for keyboard shortcuts keymaster, and I mapped them to some GMail shortcuts. I was able to make an extension that allowed me to email a group, sort my inbox, and highlight certain messages just by hitting a key. I hope you find it useful. https://github.com/SaraJo/SpaceXGMail, intructions on how to personalize it are in the README. Otherwise you can just keep my settings and become very close with my family and coworkers. 


After my talk, I spoke with a gentleman named @wshaver who wanted to make an extension to make Github code repos full screen. He did it! It's here: https://github.com/ws-emberex/GitHubWider, check it!


Also, for your pleasure, I made sure to optimize the slide/cat ratio in this deck.


 




Tuesday, May 22, 2012

Deployment Dance Party

Today was the end of the first iteration for the new product team here at Levo League. We think it's super important to thank, not only the developers, but also the people building the business that makes this team necessary. 


We all got together as a company (champagne optional) and for the first time held a Deployment Dance Party. We had so much fun we created a public repo on GitHub for you to hold your own. You can see it here, it supports Heroku and Capistrano currently, but it's just as easy to add your own commands. Pick a dance mix, and kick off your deployment toasting your success and sweet dance moves. 


It was a fun party, we hope to keep improving the script with each one. 


Your move, brogrammers.  000001


 



Thursday, May 10, 2012

Happy to Announce I've Accepted a Role with the Levo League

The last thing I wanted was a job. I've been independent for almost 5 years and I've loved the freedom of working with startups and taking small projects here and there while building things on my own. It has been super rewarding. 


I started working with the Levo League a few months ago as an independent. Helping them to integrate their existing platforms. The thing that improved immediately upon working with them was my wardrobe, these ladies set a high bar. Another thing I noticed is that I loved working in their offices. I usually work at home, or from New Work City, however, I kept coming in and working right next to them.


They have an amazing team: all strong, accomplished, hilarious women who truly love what they are working on. Amanda Pouchot and Caroline Ghosn are a joy to be around, they respect the development process, and they both have a great vision. 


I was helping them interview other developers for the CTO position, and that's when it happened. I had a funny feeling, and after some internal searching I realized I was truly sad at the thought of not working with them any more. They had jokingly talked about hiring me early on, and I jokingly told them I never wanted a job again. When they gave me first refusal before they offered the job to someone else I was overwhelmed with the thought that there couldn't be a better place for me. So, I accepted. 


We agreed that projects like Girl Develop It, and Vasilia are important to me and should stay that way. We discussed how important open source is to the ecosystem of the internet, and anything we build that can be abstracted out will be open sourced. We are currently working with amazing developers, designers, and user experience experts to create an intuitive, responsive platform. 


I'm so excited to explore this opportunity with the Levo League. Not only do they have exciting technical challenges, but they are doing something I really believe in. They really are all so passionate about creating an environment for women where they can come for help, advice, and mentorship regarding their careers. It's a logical step after the things I have done with Girl Develop It. 


The Levo League investors are women that I consider to be my role models, like Gina Bianchini and Sheryl Sandberg. I'm excited to have the privilege to work on something they can be proud of. 


 


 



Friday, April 20, 2012

How to Win Founders and Influence Business

This is a blog post that ended up getting published in Fast Company!


Read Here


Enjoy. See you at Fluent JS and NDC!



Friday, January 13, 2012

Now, a Super Easy Way to Participate in the 1/18 SOPA Protest

Hey all, I wrote about the 1/18 blackout protest for SOPA/PIPA and why I'm participating here. Now there is a super easy way for you to participate, even if you aren't a developer. 


 


Drop the following code in between your two <HEAD></HEAD> tags on your site, your users will be redirected to the blackout page that describes what you are doing and why. Then, when the protest is over, simply remove the added code. 


 


<script>


       window.location = "http://protestsopa.org";


</script>


 


The protest is starting at 12am on 1/18, and lasts 24 hours. If you have any questions, let me know!


 



Thursday, January 12, 2012

They Can't Take Our Internets

 


There are few things in this world I would get beaten in the streets for. You never see a people really stand up to their government without seeing people getting beaten in the streets (we saw some of that late last year). The internet is one of those things. 


 


I'm not going to tell you what's so cool about this internet thing, but I will tell you what's not so cool: people trying to take it freedoms away from it. SOPA and PIPA have been all over the nets lately, but we know about them because we care about these things. It's time to show the people who don't live on hacker news what they have to be worried about. 


 


I'm taking down all my personal sites on 1/18 along with sites like Reddit and ICanHasCheezburger. I will be replacing the index with this. I hope you will consider joining me, you can add your site to the github here: https://github.com/SaraJo/SOPA-PIPA-Protest-Page, or reach out to me (via comment or email) and I will add it for you. 


 


Let's save the internet! 



Wednesday, December 28, 2011

There is No Such Thing as Proprietary Client-side JavaScript

 



 About 3 years ago, I launched my first product. I built it with two fabulous partners, who continue to produce awesome things. It was a little app, and a tool I thought made for better web. It is no longer online, due to costs, it was a URL aggregator called bundl.it. It was a big deal for me, as it was something I made, and put online for others to use. It was a useful tool, and I'm still very proud of it.  


 

A year or so later an established website in the same industry launched a feature that was doing the exact thing that my app was made for. They even gave it the same name. 

 

When the news hit I was flooded with emails from friends and folks that had happened upon my site. "Hey, are you working with xxx?", "Did you see what xxx did? They totally copied you!", "How could they do that, I'm so sorry. You should do something.", "Are you going to go after them?"

 

At the time I was disappointed, not because my idea had been "stolen," or "copied" by a larger company. I was disappointed because I knew that had I put my all into this product, if I had followed through with support, focused more on marketing, and funneled my energy in this product there wouldn't be market to steal. 

 

In other words, it was my responsibility to make my tool the staple the internet needed. However, the field was wide open, because I left it open. There is no such thing as disruption from the couch, and that was the valuable lesson I learned from the experience. 

 

Another lesson I learned, is that people seem to think they own ideas on the internet. Or, in this case, that I owned my idea that I put on the internet. 

 

We have seen a lot of arguing back and forth about these issues as the landscape of the web is starting to be sheriff'd. SOPA, The Winklevii, and hundreds of completely absurd patent lawsuits. These issues has made the concept of ownership of 1's and 0's on the forefront of world issues we face every day. 


 

As the world of software development becomes en vogue, we are seeing this issue broached by new developers and veterans alike.  The idea of code "ownership." The idea that the method, or the algorithm makes you money, and therefore is proprietary.



 

Web pioneers like Torvalds, de Raadt, Stallman, and DeIcaza battled on this ground. They created the free software movement, GNU/Linux, Git, Open BSD, and GNOME and told big-co software companies to go screw as they opened up their code for fellow developers to learn from, to better their craft. The sharing of ideas for a better internet. 


 

Yet, still today, people sue over simple equations behind engines making millions of dollars. NDAs and invention agreements are everywhere and claim to cover websites, executables, webapps, modules, functions, and methods alike. 

 

However, in the midst of it all, lies client side JavaScript. I freaking love this shit. I'm here to say there is no such thing as proprietary client side JavaScript. Again, there is no such thing as proprietary client side JavaScript! 

 

You can protest, argue, call people thieves, stake the moral high ground, and point fingers all you want. There is no obfuscation, everything you have done is right out in the open for everyone to see. More importantly, everything you do is in the ecosystem for people to learn from. I think it's a great proof of concept as I've never heard anyone get angry at someone else for stealing something they have written for the DOM.

 

People don't run around copy -> pasting things they find elsewhere. For many reasons, mainly, your style comes through in what you write. Your code is your signature, and someone else's never can express your unique type of art. When it does happen (which it does), it is a matter of ethics, not law or government. Clientside JavaScript is policed by the JavaScript community, and if you're a thief that copies and pastes, people know. 

 


Not all of us write JavaScript clientside. So we all can't go about just assuming people can learn from the things we have created. So I have a few suggestions. 

 

Obviously, there is Github, and any startup that puts their code out there for people to learn from is an open web advocate in my book. That also means we need to stop signing agreements that include clauses about the ownership of syntax (I will from this point on not be signing such contracts). This means educating the people we work for about the developer community, how we help each other, and how being open puts you in a unique position to improve your standing, and help others. 


 

Funny enough, developers are now in a place of power that we haven't known before. Recently, I've seen a new form of currency sweeping the world of business. Developeronomics. From the lone startup founder, to the VC; from the Mom and Pop shop, to the Hedge fund douche bags, from the CEOs of big corp to the teachers of public schools, there is something they all need. Web developers, good ones. Enough to offer obscene salaries, equities, weekly backrubs, briefcases of cash, and sexy parties to the crack team of developers they employ to carve out their section of the internet. 

 

This puts the development community in a unique position. Do we copy the established business community in the money grab? Do we want to line pockets while cranking out "It's this for that's" with every nerd for his/herself on the terms of "my code, my product, my creation?" 

 

We've seen what that has done for the remnants of the industrial age, with huge corporations being the enemy of the individual. Where corporations battle each other in the media, and keep a tight grip on information, even if it means people losing lives. Where advancements are being retarded by a legal cat and mouse game, because the information companies hold dear could help all of us the world over if they would join forces. 

 

What a beautiful place we are at where we can make a conscious decision not to follow in their footsteps. While the internet and it's implications are still being formed every day. When we decide that the education and advancement of future developers, our children, and the history books are more important than lining our pockets (seriously, how expensive can comfy sweatshirts and Vibram Five Finger shoes be?) 

 

Where would we be now if John Resig decided to keep his little library to himself? If DHH kept his framework proprietary? How much further could we be if more people shared the way they did? 

 

I'm pledging to work for an open web and open code, a place where we can all share, learn, and invent together. I hope you will too. 

 



Thursday, December 15, 2011

Adding Profile Fields in Diaspora


I have a friend/client that is using a customized version of Diaspora to host a community and allow them to engage with each other. We have made some changes, in order to better serve our community. I'm not a Ruby developer, myself. Some of this stuff may be obvious to those of us who are. However, for the rest of us, I put together this little guide to demonstrate how to do these things on your own. 

Adding/subtracting fields from profiles. 
We wanted to add the fields: "company," "twitter ID," and "company URL." I found you can do so by following these steps



STEP 1: Add columns to profiles table in MySQL. 
    I'm going to assume that whomever's reading this doesn't know crap about mysql either (well, you have to be able to login, and get to a mysql prompt).        Give your new field an alias. I went with company_name, twitter_url, and company_url. Once you're logged in to mysql, you're going to want to point to the DB (either diaspora_development, or diaspora_production). The command is "use diaspora_development".     


Screen shot 2011-12-15 at 7.45.49 PM


  Then get information about the profiles table, using the command "DESCRIBE profiles"  (this is so you can see what's going on with the table in general, not a necessary step).       


Screen shot 2011-12-15 at 7.46.34 PM


You can then add your columns, by using the command


"ALTER TABLE `profiles` ADD `new_column` VARCHAR( 255 ) NOT NULL;"       


Screen shot 2011-12-15 at 8.26.37 PM


PLEASE NOTE: I am 100% sure there is a way to do this by altering the schema.rb file, however, I wasn't able to make that happen by just editing and re-migrating so this was easier for me. If you could instruct me on how to do that I will replace this section.         


 


STEP 2: Open up apps/models/profile.rb starting on line 17 you will see some XML Attributes being declared with like so "xml_attr :property" add yours to the bottom like so:
Screen shot 2011-12-15 at 8.28.12 PM

Add them yet again on line 42:


Screen shot 2011-12-15 at 11.59.57 PM

STEP 3: 
///NOTE REVIEWER: DON'T KNOW IF THIS IS NECC. OR WHAT IT DOES, THOUGHTS?
On line 82 of the same file, you will see a function called from_omniauth_hash, add your new fields to the columns like so:
Screen shot 2011-12-15 at 8.36.11 PM


STEP 4:
   Now you need to go into the language files and add your fields. Open config/locales/diaspora/en.yml (or, whatever language version you are using) and starting at line 616 you will see the aliases for the different profile fields, add yours like so:      


Screen shot 2011-12-15 at 8.47.36 PM


STEP 5:        Finally, you need to update your view. Go to app/views/profiles/_edit.haml add the new h4 with your fields in it. Now you are done!


Screen shot 2011-12-15 at 8.55.27 PM



Friday, October 28, 2011

Developers and Professionalism

 UPDATE: Please notice, the author of the story shared is actually Matthew Heusser, this is what I get for not confirming before posting. Thank you, Matthew, for sharing your story!!


 


 


I'm a developer, and inasmuch I am proud of the fact that I rarely wear pants. As I write this now, I am wearing pants, but only because I went into the office today. I have orange hair, and a large assortment of lip gloss. I sleep to 11 most days, and I defy anyone that says I shouldn't. All in all I've embraced the developer's frat guy lifestyle. 


I've started a book called the Clean Coder by Uncle Bob Martin. The thing that has made the biggest impression for me was in the forward (written by Matthew Heusser). He tells a story about a development team he was once a part of, I'm paraphrasing quite a bit (the book is still at the office), but he talks about a team in an enterprise company that had been working on a project for quite a few months with a set-in-stone release date on the horizon. As the date approached they worked day/night/weekends to get things done. He had a team of talented coders and under much pressure from management they strapped themselves to their keyboards in order to get the job done on time, and they did.


The Friday before the Monday release date they were stoked. It's so rare that a project gets completed exactly on schedule, but they had done it. They were celebrating and relaxing when they got a call from management. Seems that legal hadn't finished the paperwork needed for the launch, and they needed an extra day to get things done, the meeting was going to be pushed to Tuesday.


"No way" was Matt's response, "we have been killing ourselves over this. They have Saturday and Sunday to get this work done, plenty of time." "Sorry," was the word from above, "these people are professionals, we're not going to ask them to work the weekend. Meeting is pushed to Tuesday." Matt was irate, "Are you serious? My developers have been working around the clock, nights, weekends, you name it. We can ask the guys in legal to put in a little extra time." Management responded, "You don't understand, these guys are PROFESSIONALS."


That's when it sunk in for him, people don't think developers are professionals. They look at us like a bunch of sloppy kids that happen to know how to do something that they need. After reading that story, it sunk in for me too.


Clients trust me to take care of things they don't know how to do. In order to do that, they need to feel I am competent and capable. Disappearing in the zone for a few days, while it may be best for the project, isn't comforting for the client. Up until then I had a dim view of client hand holding, and thought "they just need to trust that I am working on it." However, I have realized that a good working relationship, constant updates, and accountability are just as important as clean code and passing tests. 


I still rarely wear pants, and have orange hair, but my client's comfort is much more important to me now. I want them to know I'm here whenever they call, and they can trust that I'm working hard to solve their problems and build their software. The response I have gotten has been great, and I've noticed how much they appreciate being kept in the loop no matter what. That makes my job easier, and that's a reward I didn't expect. 


 



Tuesday, October 18, 2011

A Post About Why I No Longer Do .NET Development

This blog post has been a long time coming. I initially started doing web development using ASP.NET and C#. I was honored to be given MVP distinction by Microsoft for the years of 2010 and 2011. I wanted to wait until that had expired before commenting on my departure from the world of .NET development. 


I started my career within the .NET community, and my posts of late have been devoid of Microsoft references. I can only imagine that folks that enjoyed my "Web Forms to MVC" other C# posts are wondering where the love was lost. There is no love lost, I will be forever grateful to the .NET community for how they helped me get where I am today. There are several reasons that I no longer do .NET development professionally. I will try to explain them in this blog post. 


 


First things first.


I have to get out the wonderful things about .NET development that I experienced on the way. The .NET community is extremely warm, and welcoming. .NET development has the highest female : male ratio in development I have seen. The reason for this is obvious: the people. They welcomed me when I was new, they helped me learn many things. I can't thank them enough. 


The barrier for entry was low, there were few "well actually..." and more "welcome!" I was actively encouraged by my peers to contribute. I still call many people "friends" that I met back there. I hope to emulate some of the mentorship that I found back there with others in the future. 


 


The Angry Rant


I have seen many people "quit" the world of Microsoft development. It usually draws out into a long thing with a Twitter battle, and angry comments, and a throw down to the teams that don't care enough about supporting their developers within Microsoft. The tools are bad, the direction of the languages are crazy, their support isn't fast, someone is a jerk, etc. It always calls me back to a time of message boards and people quitting the internet. 


There is a primary disconnect with people that blame individuals, or direction, or other such surface issues, there is a failure to understand the business of Microsoft as a company. Microsoft makes money working with Enterprises. Microsoft answers to shareholders. Therefore, C#, F#, ASP.NET, and all other Microsoft frameworks/languages are a for profit operation. Yes, I am aware that the majority of their income does not come from these tools, and not even from $10,000 MS SQL Server licenses. However, the responsibility for all their employees, all the departments, and ultimately all the initiatives is to answer to their board. 


 Developers can not rationally expect this to lead to more perfect tools and a better community. Money buys you a lot of resources as a company, but, ultimately, your driving force is apparent on what you create. 


 


What this has to do with me


Ok, well, Microsoft supports me as a developer. Pays for me to come visit them, eat on their dime, and I even get these really sweet jackets. Why disrupt something so choice? For me, it comes down to my fundamentals as a person. 


I believe in the internet. I believe in people. I believe that people have created something beautiful, and it's up to us as developers to build and grow it. 


Being a software developer in this age is a privilege, something the world has given me, and a responsibility. 


I believe in open, I believe in being motivated by what is best for the web, and not what is best for my company. Making that decision over and over again has cost me a lot of money, and many perceived "opportunities" but my soul remains intact and I believe I am contributing to an amazing time in history with my fellow (wo)man in mind. 


JavaScript is free. JavaScript is open. JavaScript is built by people that love the same things I do, and only answer to this community, their consciences, and what drives them. 


For me it was undebatable that this is where I wanted to be.  


 


The People


I know many people that are not only .NET developers, but work to build the related languages and frameworks from within Microsoft. I don't consider them sellouts. I think they are making their difference where they can, and want to. I am doing the same. I respect them not only as developers, but as people, and friends. I am eternally grateful to them for giving me the introduction to community and web development they did. I look forward to continue down the same path, building web one link at a time. 


 



Sunday, October 9, 2011

Doing a 5k and Teaching a Chrome Extensions Class

 


There's this guy, his name was Terry Fox. When he was 18 he learned he had bone cancer, so he proceeded to run a marathon a day for 143 days depite losing his right leg. I find stories like that incredible, and every year people run in his memory (a measly 5k, I might add). Anyway, I'm running with a team and we have a paltry fundraising goal. If you are interested in donating, you can do so here. Our team name is kind of corny, but you can see what we did there.


 


I'm teaching a Chrome Extensions class at New Work City in conjuction with their sponsor, Google. Super excited to get more people cranking out extensions, if I can quote one reacting from my jQuery talk, "I had no idea it was that easy." Students will be building multiple extensions in the class, and will walk out with knowledge on how to build all the diverse types that the Google platform allows you. Link to the class is here, let me know if you're interested and I can hook you up with a discount code. Also, check out this HTML5 & Modern Web Apps class, being taught by one of their developer evangelists.


 


Right now I'm enjoying beautiful Norway for the Frontend 2011 conference. Designers sure talk about their feelings a lot, no? 


 


 


 


 


 



Thursday, October 6, 2011

Add Blocker - a solution for annoying Google+ notifications

I like Google Plus. I think that if it gets more acceptance it will be the perfect solution for all of us nerds to play around in (until our moms find it). I really get irritated, however, in the current notification system. For some reason we all seem to be complaining about a lot of notifications that boil down to "someone you don't know is following you on Google+" Don't get me wrong, I love the fact that people are interested in what I have to say in general. However, I don't need a telegram every time I get a follower. I do however, need a telegram when someone shares something with me, or comments on a post. 


 


I built Addblocker to do just that. No longer will you be plagued by "Some guy just followed you on Google +". 


 


So far it only works in GMail, but I'm working on every other Google property. Without further ado:


 


AddBlocker


 


Here is the GitHub in case you'd like to make any changes. It's using jQuery right now as it was a demo for jQuery conf, however, I will likely remove it as it's not necessary for this particular extension, so keep that in mind. 


 


Please let me know if you run into any bugs, or issues. 



Wednesday, August 31, 2011

Forgiveness

I am, and always have been, a fuck up. Ask anyone that has known me for more than five years and they will vouch for this. There are kids that learn how to swim by taking lessons, practicing in the shallow end, and then, when they are ready, make their way out to deeper waters confident they can stay afloat. There are also kids that see someone make a high dive one time on tv, run onto the diving board and face plant their first time in the water. I'm one of the latter, and though it's taken me nearly thirty years to get here, I'm okay with admitting it in mixed company. 


The media makes this disposition seem quite glamorous, and people think it's exciting. The STNG Qs(my favorite), Dr Gregory Houses, Shawn Spencers and Junos. History has many we look up to, Oscar Wilde, Douglas Adams, George Carlin, Voltaire, Feynmen, Adams. In reality, for as many make it into the public eye, there are 50 more in desperate circumstance. We are the drug addicts, the desk throwers, the dysfunctional, unemployable, and homeless. 


There is one trait, and besides the many good people that surround me it is the only thing that has kept me away from succumbing to the dangers of my temperament. That trait is the ability to forgive myself, even when it seems unbearable. 


Very often, I do things that are extremely stupid. I think no matter what our personality type that happens to us every so often. I make a bad call when designing a product that hindsight shows me from a mile away, I put off a client with a sloppy email or a poor follow up, I miscalculate my monthly income in an astronomical way, or I drop my iPhone 4 on cement while running down the street in heels (for absolutely no good reason besides being dared or trying to catch an ice cream truck). Things like this used to cause me much pain, and stop me in my tracks unable to go forward from the shame I felt and the voice in my head telling me I should have known so much better. There would be absolutely no forward progress while I berated myself, sometimes looking in the mirror and asking repeatedly how it was possible for one person to be so stupid. 


Time and experience taught me that if I kept up that type of behavior it not only would retard my progress it would endanger my ability to run my business and follow my career goals. I've learned to forgive myself no matter how spectacularly I fail, and that has enabled me to accomplish things and get to places that only existed in my wildest dreams of the future. 


Many tout the benefits of "getting over it" and "moving on", however, I think the only way to describe this process is forgiveness. You are angry at yourself, for hurting yourself; just as you would be angry at someone else for hurting you. You let yourself down, you should have known better, and you were inconsiderate of your own needs, yet again. If we can't get past these emotions of guilt, anxiety, and discomfort we can't look back and gain what we can use from the experience.


The ability to fail intelligently is something I constantly strive for. In order to get to that point, you must be able to quickly regroup and do a post-mortem of your behavior, actions, and decisions. You need to be able to look yourself straight in the eye and say, "how is this going to go better next time?" You can't be afraid of a next time, you need to plan on it. To look intimidation in the face, and not be afraid to be an embarrassment to yourself all over again. 


I found this excellent post by Rand Fishkin this week that illustrated how valuable this is, not only to yourself, in this case also to many others. The CEO of Seomoz, a Seattle based startup, shared his experience with going after funding and subsequently failing. His detailed analysis of his experience tells me that this isn't the first time he's tried something and not attained his goals (imagine?). Sharing his decisions, the actions at his company, the outcome and perceived consequences not only benefits him should he revisit this world again, it helps all of us who go down that road to understand more about what it means to succeed, and possible roads to failure. 


It is very easy to talk about forgiveness, but many people are locked in a world where they cannot accept anything but perfection. Being a good software developer, product manager, computer engineer, or ice cream truck operator (for that matter) means being able to reflect on what you have done poorly and live your life in iterations. Because being good at something means never being perfect, it means seeing where you've done poorly and never doing it again because you care about, not only your work-product, but also yourself. 



Thursday, June 30, 2011

The Work Life Balance of an Independent Software Developer

I hear a lot of talk about this "Work Life Balance" thing. It sounds interesting, and at some point in my life I think I will probably enjoy having one. Should I have a family, for instance. One thing I appreciate about this field is how mom friendly it is. As a developer, it's super easy to work from home, and keep some pretty weird hours. I hope one day I can sit next to my child while I hack away at work, maybe they will read Nancy Drew books. 


As far as my swinging bachelorette lifestyle in the big city goes: there is no balance. My work is my life, and I love it that way. My process is thus: I wake up in the morning. Usually around 10am(ish). I roll over and check my iPhone. I have a horrible habit of getting important emails when I am half asleep and not starring them, this itself isn't awful but when I wake up sometimes I don't remember them. I have been getting better at this. I <3 priority inbox. 


When I get up I decide where I want to work that day. The unofficial slogan of New Work City is "People that can work anywhere work here." Independance means I can work anywhere. Most of the time it is there, or outside somewhere, or at a restaurant, or at a salon getting a pedicure (I have wifi to go).


My first priority is always client work. This can take anywhere from 1-10 hours, depending on my workload. It varies depending on number of clients and where I am in a project. Lately I have found happiness in being short term JavaScript support for existing teams, or working on small projects or plugins. Depending on who I am working with we often have chat open, or a constant email dialog. Sometimes I take a few calls. I spend equal time in Komodo, my editor of choice, as Vi or just in the CLI git-ing it up. I like solving unique problems, and I like to think of myself as a bit of a browser sleuth. 


After I am done with client work I move on to Girl Develop It. This can be anything from coding to answering emails to working on curriculum to interviewing potential teachers. Vanessa and I share a Remember the Milk todo list, and every day I try to knock a little bit off the top. Some days I'm in the zone and I'm knocking things off our list, other days that's Vanessa. We balance each other out pretty well, a great pair.


Throughout the day I am talking to other developers about life and their craft. 


If I'm at New Work City or a community space I've usually had conversations with at least a few keyboard slingers around me. Today no one would shut up about Google+, tomorrow it will be something else. Sometimes a debate about frameworks. Sometimes Kevin Galligan waxes crazy about hating dynamic languages. Sometimes Alex Godin impresses me with the latest thing he's working on. My darling Tony Bacigalupo sometimes wants to chat with a question or some commentary. 


If I'm alone somewhere hacking away it's likely an IM from Jackson Harper inquiring about a Girl Develop It swimsuit calendar, or asking if my quiet protest of Go Daddy is because I don't support their female models contributing to technology, or introducing me to a new technology I hadn't heard of/vice versa (or asking what to get his fiancee for her birthday). It may also be  Scott Reynolds who I bug for Ruby help and always get it (riddled with snark). I can be insufferably inattentive to IM windows however, and consider forgetting a conversation existed the reason to end it. Sorry about that. 


After I am at a point where I feel it's ok to walk away from Girl Develop It related work, I can focus on my personal projects. The shoemaker's shoes, if you will. New design on the blog, new project with a friend, returning some emails, learning a new language... I must admit I rarely get this far. 


Evenings start around 9pm. There is an equal chance I will be out on the town, teaching JavaScript to Girl Develop It students, going to a developer event, or  sitting in a cafe working all night. 


Like tonight:


Photo (2)


There are times I get tired of teaching classes, or working on a certain project, or solving the same problem. However, I'm never sick of being a developer or being surrounded by them. This is a great thing because I am got-dang 24 hours a day, and that's how I like it.


For now.