I’m writing a book about improv comedy. But it will be a different book about improv comedy than all the other books about improv comedy.
I’m writing a book about improv comedy. But it will be a different book about improv comedy than all the other books about improv comedy.
Recently a developer was asking a question in the group chat room wondering if anyone changed a component. I coached the dev privately to review the code change log in SVN. I also encouraged them to post back to the slack room once they have the answer.
They actually did review the log and found that the code change in question was a bug fix that actually busted a few other things. However, they did not follow that information up with the team in anyway.
It’s always courteous to follow up with the team if you’ve answered your own question. Who knows – you might save the team a ton of heartache down the road!
Recently I had to work out a script that would rename the directory names that Photos exported to something that was sortable by date.
2013 Photo Export/Westborough, MA - W Park Dr, January 30, 2013
would go to
2013 Photo Export/20130130, Westborough, MA - W Park Dr
That way the directory could sort on 20130130!
Just update the WORKING_DIR to the directory that contains the exported photos and use this.
from dateutil.parser import parse
import datetime, os, shutil
WORKING_DIR = ''
tokens = direc.split(‘ ‘)
if len(tokens) == 3:
#name should be it
dirtokens = [ ]
datetokens = [x.replace(“,”, “”) for x in tokens]
dirtokens = tokens[:-3]
dirtokens[-1] = dirtokens[-1].replace(“,”, “”)
datetokens = [x.replace(“,”, “”) for x in tokens[-3:]]
if len(dirtokens) > 0:
dir_str = ” “.join(dirtokens)
dir_str = “”
date_str = ” “.join(datetokens)
d = parse(date_str)
dir_name = datetime.datetime.strftime(d, “%Y%m%d”)
if len(tokens) > 3:
dir_name = dir_name + “, ” + dir_str
for file_name in os.listdir(WORKING_DIR):
if os.path.isdir(WORKING_DIR + ‘/’ + file_name):
print “Moving ” + WORKING_DIR + ‘/’ + file_name + ” to ” + WORKING_DIR + ‘/’ + rename_dir_to_name(file_name)
shutil.move(WORKING_DIR + ‘/’ + file_name, WORKING_DIR + ‘/’ + rename_dir_to_name(file_name))
I’m in the middle of some interview preparation. It’s been nice as it really does help you become more aware of yourself as a professional. One area that I struggle with, without knowing that I struggle, has been in whiteboarding.
Since I do most of my work remotely there is usually not a huge demand to whiteboard with folks on the team. I rely more on the written word than on visual identifiers which has a lot of issues.
The interview processes however, usually does require a lot of whiteboarding. Showing up to one of these interviews with rudimentary whiteboarding skills is a negative signal on you.
Thankfully, folks over at smallbusiness.com did a 5 part series on how to whiteboard. All of the techniques are easy enough. It looks helpful for everyone, even if they are ones who whiteboard all day everyday!
A simple tip: Use lowercase block lettering while whiteboarding; it’s easier for people to read and lets you use uppercase block lettering to indicate impact/emotion.
I like doing a Work Smash! Say you have a list of to do items to get through. They can be like.. a bunch of small tasks. I use the Seconds app on my iPhone to create a “10 Minute Work Smash” timer that consists of 5 two minute exercises.
I start that timer and start working on one of the items on my todo list. I let the 2 minute beep (short) let me know when it’s time to hurry up and finish and move to the next task.
What that does it give me a bit of fire on finishing the item. Sometimes it might take 10 minutes to finish one item but that’s OK. The point isn’t to get 5 tasks done, it’s really just to light a fire under you!
Hi, I’m Shaun Farrugia and I’m a system architect whose hands are practiced in code and status, but not so much at taking notes. These are the VERY TERRIBLE NOTES that I took at the “Get Funded as a Technical Founder” talk that was given by Charlie O’Donnell (@ceonyc) at the (very good) Django NYC Meetup Group.
Since this was a Django Meetup , that means the audience was mostly engineers here. Most of them knew what a VC was but they didn’t really know much about Venture Capital or how to ask about it or even what the effects of taking VC would be on the company they ran.
DISCLAIMER ON NOTES: I took okay notes but I’m not really capturing the spirit of how Charlie talks here; he’s actually a very engaging speaker. So hopefully you, the fun reader, is going to get something out of these.
With that said – here are the notes!
We trade on illiquid stuff which is equity in a company. VC’s look at all markets not just tech. However, there is not a lot of open access to these markets as it’s not like a public stock market or anything. Yes, there are things like Angelist and Crunchable, but the best deals aren’t usually out there. They are kept quiet usually and in the know. (SCF> I have “so it doesn’t get crickets” in my notes but I can’t tell if that’s just sloppy writing or if that was what was said!)
There is a difference between Angel Investors and Venture Capitalist as the term Angel Investor usually means someone using personal savings and a Venture Capitalist tends to be managing a fund for an institution.
Different VC’s do different size deals. Charlie usually does deals around 250k and he has about 8 million to “play with”. Other companies like USV (Union Square Ventures) are dealing with a pot of 500 million. They do different types of deals.
A VC usually wants 20% in equity. So if you manage 500 million you need a lot of exits because higher investment. Charlie manages around 8 million so doesn’t need a ton of exists on 20% to make a huge return and a big impact for his group.
Sometimes the funds that a VC will manage will grow (2mil -> 8mil -> 200mil). So people who would have talked to you 3-4 years ago won’t talk to you if you aren’t large.
Basically my job is to meet a lot of people. Some of these new people turn into new opportunities. Sometimes the people he meets get placed at some of the investments that his fund has made.
Sometimes he would like people to run an idea by him first. Shark Tank is bad because people feel like they have one shot and if they don’t get it then the idea is bad or they won’t get an investment. One time he gave good feedback to a pitch that had a poor use case, they took the feedback and improved the use case but then didn’t come back. Charlie wants people to come back.
If he doesn’t think people will pay for your service/product, then it’s your job to show that people will pay. Example: Classpass pivoted from their initial service and then started to charge, based on some feedback, so they were able to adjust the initial approach and repair the use case so that it became something that people would pay for.
He’s keeping an eye for what will be a stumble.
(SCF: My notes here are terrible so I’m not really being accurate with the numbers of the pitches per week and the time period he sees 2k emails/demos in. Blame my childhood and the lack of exposure to shorthand.) He will get 3-4 pitches some weeks and more other weeks but between emails and demos he sees about 2k a month(?)
If you pitch something that I like, then it’s yours to lose.
If you’re going after certain segments, you need a large sales force and keep in mind that in the “Blackboard” market, you really need to make sure the IT administrator who is stuck installing this software for 6000 users can be happy or else you’re not going to make headway.
Well if you’re making 90k a year of your side project; then keep it; no need to open that up for a VC… Why not?
1. If you take a deal, then one day assume it won’t be yours. This is because once your company grows, you might not be the best person to run the company or it might be too big for you.
2. If you take a deal you really need to imaginenot being a part of the company.
3. You have to go cash flow negative to grow. VC will want you to grow not profit. So you’ll need to hire a CEO and a bunch of engineers in order to sell into X market. This is what your job starts to become.
Really – use email – Charlie and some other VC’s don’t care if you cold intro! They have the reparative plugin and know who you know so they can get a sense of you and the network.
Some VC’s are picky about having a warm intro but hey if you’re selling 100k a month then those same VC’s aren’t going to be picky.
A) Not much! I’ll keep an eye on your online footprints to get some insight on your ideas. If the idea is compelling and your online life is matching up then it’s OK. Then he gets a sense if he can work with you. An example he brought up is he was giving advice to a younger guy at one time and the guy was nodding and saying yes, but Charlie could tell he was not really listening; that’s a red flag.
A) Too many VC’s are too worried about that! Charlie is interested in knowing about things but isn’t shutting himself out of huge swaths of the market.
A) Charlie doesn’t really care until you have about 750k of Angel investment. At that point it’s a little too funded for someone of his size to get involved.
He feels like hardware is a good place for crowdfunding because manufacturing can be expensive. Sometimes he will send someone to get crowdfunded instead of investing because that will work better for them.
A) That all depends.. (Charlie shared a few anecdotes at this point …)
-Sometimes sees a guy on Twitter and asks him questions
-Sometimes he gives homework to people based on a pitch (AKA why is this different than the 4 that failed)
Charlie says never to do stuff for VC’s that is extraneous if you think it’s fundable.
A) People are committing 250k over 4 years. That’s a minimum. He has a handful of Angels, VC’s and 3 small institutions that are the makeup of his fund.
His portfolio needs to have more than 20 companies in it, otherwise it’s too much risk.
The only way (individual investors) get better at venturing is venturing. Just have money and you can do it.
Charlie gives access to the deal if you’re in his fund. So that way if you want, you can double down on it.
(There was a side conversation about accredited investors at this point but I did not take those notes – SORRY!)
A) Usually just by talking to people + Twitter . Likes Jordan Crook.
A) Get your product management process down! Understand features, do user testing, have clickable wireframes. Hire UX!
Questions – Email Charlie @ Brooklyn Bridge Ventures.
I’m not sure if this is even a problem that needed a solution but I needed to get the source code off of an Android Emulator running version 2.3.3 and using the stock Android Browser. There isn’t a view source capability on the browser, and other methods that include displaying source code in a alert box seem didn’t seem to be useful.
Then, Start up and Setup Weinre
c) run weinre: weinre –httpPort 7897 –boundHost -all- –verbose You’ll want to give a httpPort of something that is free on your system. I happened to choose 7897
d) On your desktop browser, hit <MACHINE_ip>:7897 where machine ip is the ip address of your machine
d2) You’ll see a URL Bookmarker at the bottom. This bookmark will need to be copied Android Device browser bookmarks. Copy this into your clipboard and paste into a text editor on your desktop. Ensure that the bookmark is pointing to the IP Address of your machine. We’re going to make this as a bookmark on your emulator or device.
d3) On your desktop browser, hit <MACHINE_IP>:7897/client This brings up the debug page. Keep an eye on this page when you inject the bookmark later on. You’ll see this page magically come to life when you hit the link in your Emulator Browser.
From here on out it depends on what device type you want to prepare this with.
Either you can follow Android 2.3.3 Emulator Browser steps..
e) Open up terminal and type telnet localhost 5554 (windows syntax might be different but you’ll just need to telnet into the android device)
g) Open the Messages app. We’re going to copy the message. You’ll see a text message from 1234 there. Hover your mouse over it, hold the left mouse button down and wait for the menu to come up. Click Copy Message.
h) Go back to Android Browser. Open bookmarks, Hold the bookmark icon to add it. When Add bookmark comes up add Name as “Debug Page” and add location as the contents of the the android clip board by holding mouse down and selecting paste.
Or you can follow these steps for iPhone Emulator or Physical Device … (i’m sure it will work with 4.2.2 android)
e) On your physical device you can hit MACHINE_IP:7897
f) if you can do this then scroll to the bottom and copy the bookmark and add it to your device. Steps vary depending on the device.
Viewing the Source Code for a Page
In this next set of steps, we’ll look at the source code for any page that you hit with the Android Emulator.
i) Hit any page you want to view in the Android 2.3.3 browser emulator.
j) Now keep an eye on your desktop browser that is open to MACHINE_IP:7897/client while you do this step. On your android browser open bookmarks and click the debug page. This will inject some code into the page and make it available for Weinre to look at. You’ll notice that hopefully the page becomes triggered and sees the target debug device. What you did is send a message over to the Weinre server on your machine. This message contains the HTML page that you were viewing on the Android Emulator.
k) Go to your desktop browser and click Elements. You’ll see all the source tree for the page on the android browser.
l) Click Console and type in without the quotes ‘document.body.innerHTML’ There is your source.
Original Message: http://www.meetup.com/ctoschool/messages/54675512/
“As Josh said, just write your html files in a sandbox folder, and include whatever css and js libraries (bootstrap, font awesome, jquery, etc.) you need from CDNs or the same folder.
Then, when you want to see how the html would work through a web server, you can use Python’s Simple HTTP Server —http://www.linuxjournal.com/
I want to get my thoughts down on lessons learned from a crazy merge of a long running feature branch that I recently had to do while they are fresh in my head. There are a few points I wanted to make and I wanted to invite you all to add on or tweak things.
Background: I tasked two developers with merging in 3 months of code from two branches. Each branch had little to do with each other and diverged significantly. The developers approached this by branching Master at the tip and merging in the feature branch. There was also a discovery of a mistaken merge into master from the source branch that further complicated things and pulled technical leadership/experts into help fix it which further limited the amount of oversight on the merge process. Given the crazy amount of work, the devs relied on discarding changes from particular places in the master branch since there was no domain expert on hand from that branch and there was limited technical oversight throughout the process. In addition, the standup meetings had moved away from status updates to pure roadblock resolutions so there was no insight into the details a particular dev was struggling with.
Result: When the merge was complete we ended up with code where many areas of the domain additions from the master branch would not work as well as massive incongruities on the front end code.
So here are some lessons learned. Granted, most of these have been worked out by the industry by some sort of process and I know these aren’t my original thoughts but I figured it would help your team out when they make decisions around these issues the next time.
I was recently running into some issues where I had a massive git repo (12G). It was originally 2G. Since this cloned repo is used by the continuous integration system, I end up doing a lot of git checkout — . on the repo in order to get it back to a state where any of the changes I made to build it are removed. However, this constant head switching caused some cruft to accumulate over the past 2 months and now we’re in a spot where the repo is just way to massive.
So I attempted to run git gc on the repository but ended up with the following issue.
[tomcat@aa-cruisecontrol starter_relate_int]$ git gc
Counting objects: 160591, done. Delta compression using up to 4 threads. fatal: Out of memory? mmap failed: Cannot allocate memoryerror: failed to run repack [tomcat@aa-cruisecontrol starter_relate_int]$
After attempting a couple more attempts I still could not repack it. So I ended up blowing it away and recloning it. This reduced the size of the git repository to 2G. Draconinan yes, but I am glad to have the space.