What is a Feature Flag?

As a digital marketer, I wind up writing a decent number of articles for clients’ blogs. And as always happens when writing about a topic, I’ve learned a decent amount about these clients’ products. Our current biggest writing-focused client is Split, which is a B2B SaaS company selling feature flags as a service. But hold up, what on earth are feature flags? Well, I’m about to tell you.

A feature flag is a piece of conditional code that you wrap around any new feature, which links that feature to a dashboard. From this dashboard you can turn off the feature, release it to only a subset of your userbase, and generally manage all your features so you can see which ones are in use.

Now, how exactly is this useful? To start with, imagine a pre-existing codebase for a currently-working app. You don’t always start with this—one of the ways to implement continuous deployment is to start with a blank canvas—but this is usually how it works and is one of the most common feature flag use cases. Now, imagine a dev team working on a new feature to add to that app.

Without feature flags, this looks like a number of things, all of which are sub-optimal. You end up releasing only a few times a year because you need to do endless testing to make sure things aren’t broken before you push to production. You get crazy long-lived feature branches that take forever to merge back to trunk (“master” in Github terminology) and make a huge mess when they finally do. Or, worst, you accidentally break something but don’t realize until after you’ve already pushed to production, and you have to do a painful rollback to the previous version to fix the bugs, then re-release afterwards, and deal with the fallout from

With feature flags, the scenario looks much better. Instead of testing with your staff before pushing to production, just test in production on your real users—starting with just a select few of them, who have perhaps opted in to be guinea pigs. Instead of making branches which may or may not outlive their welcome and/or create a merge hell when you try to get them back to trunk, you can do everything straight in trunk. And if you break something anywhere in this process, you can just turn the feature off, no rollback required.

Beyond simply making development less of a headache overall, there are some specific things you can do with feature flags that are much harder otherwise. Some notable examples include continuous integration/delivery/deployment, canary releases and phased rollouts, and dark launches.

Continuous integration is the process of constantly and deliberately merging every code change to trunk (/master). Continuous delivery is constantly pushing each change to a production-like environment where there’s only one step of manual testing before it goes to end users. Continuous deployment is similar to continuous delivery, but without the manual testing: automated testing is the only step between the code deployment and the end users.

Canary releases and phased rollouts are similar in that they both involve releasing new features to only a subset of the userbase at first. With a canary release, the userbase subset is chosen and targeted to be test subjects, and they act like a canary in a coal mine, letting developers know whether the feature is safe to release to the broader public. With a phased rollout, you begin with a subset, which you then slowly ramp up until you’ve released to your entire userbase.

Dark launching is, literally, the process of launching a feature while keeping your users in the dark. Specifically, you use all the portions of your real infrastructure that would ordinarily be used in serving the feature, but you don’t actually show it to users. Feature flags can make this happen by letting you restrict access to only internal users, which lets the developers activate the feature in absence of a real code deployment.

There are a bunch more uses for feature flags – some of which are detailed on Split’s or FeatureFlags’s use cases pages, others can be found on Martin Fowler’s blog.

Farewells and Changes: Week 5 at Upgrow, Inc.

At the beginning of this week, I found out my boss is leaving by the end of this week. Initially, I didn’t know what that was going to mean. After all, despite our previous difficulties, he taught me almost everything I know about SEO. The only way I know how to do most things is the way he taught me. Further, beyond the cursory interactions of office smalltalk and the occasional question about some techie thing, I’d had almost no interaction with anyone else at Upgrow until this week. (Well, except Yitzchak. I suppose I should be saying “anyone more experienced than me”.) The exclusive focus had been becoming a better assistant to my boss, and now that he’s leaving, I didn’t know what to do.

Up to this point, the entire SEO team of our company has been three people: my boss, a part-time contractor, and me. So I realized, with my boss leaving, I was going to have to step up. How was that going to happen? The first obvious thing is that we’re in the process of onboarding two new clients, which is a big front-loaded process involving an SEO audit for their entire website. I’d want to prioritize that in addition to my other projects, and further, get to know the rest of my team better.

With that plan in mind, I got started working on Monday. By Wednesday, I’d met the person who might end up becoming my new boss – a fun guy with an intense smile. He’s part-time for now, and he has other clients, but he may come on full-time later on. (Or maybe not: nothing is static in the realm of business.) I got on very well with him, and it turns out he has a background in tech as well. We talked over lunch about programming, career paths, and other such things.

Over the course of the week, I worked with my soon-to-be-ex-boss to transition all my projects as best as I could, and I got the go-ahead to start sitting in on client meetings (one of my main goals for this week, since it seems like a long time coming). I started deliberately talking more with the co-founders in order to take on more projects, and I’m happy that I click much better with everyone else at the office than I did with my boss. I’m usually a very sociable person, and clicking badly with someone like that threw me off a little. I’m glad it was just that relationship, but I’m also glad I found someone like that so early in my career: it taught me a ton of valuable lessons about the corporate environment which I’m sure to use from here on out.

Overall, everyone, especially the co-founders, have been doing their best to make the transition smooth. Still, there’s always that period where almost nothing actually needs to get done and things can just coast on momentum for a bit, and I think this week was that period. If things are going to go downhill, I anticipate that they’re going to start doing so next week.

As such, for next week, on top of continuing what I started this week, I’m planning on overcoming a bit of akrasia. I keep saying I’m going to get stuff done on the weekends and after my workdays, and yet I keep not doing it. I recall something Eliezer Yudkowsky wrote, about the three types of hard work necessary to accomplish difficult things. First, you have to not run away, which takes seconds; second, you need to sit down and work, which takes hours; and third, you need to stick at it, which takes years. The first and third come naturally to me at this point, but the second one has always been hard.

It could theoretically be comforting, to think that one of my favorite writers has the same issues I do with working long hours, and I could leave it there. But then I think, that’s no excuse. In Eliezer’s own words, reality is not graded on a curve. If I’m trying to do something really difficult, I need to get a lot better at this. I’m not putting in a desperate effort as if my life were at stake, though of course, it is. That’s about to change.

A Partial Guide to Modern Marketing

In the past month, I’ve gone from not having any idea what keyword research is to being able to name four different keyword research tools off the top of my head and have a coherent discussion comparing their benefits and drawbacks. Because trying to keep it all in my head is really not the sort of thing I do, I wrote up a little guide detailing the organic SEO process as I currently understand it, after a full month of Intense Marketing Startup.


There are two types of SEO: on-page and off-page. On-page SEO happens on the website and thus in your direct control as the webmaster; off-page SEO must involve other people. They must always be done in that order, since you can’t get others to interact with content that doesn’t exist.

Fundamentally, on-page optimization involves creating popular content. To do that, you need to know what your audience wants to see. This is both an exercise in knowing what topics your audience is interested in and knowing what format they’d like to consume that content in. Since you’ve presumably niched down enough to know the former, and since the latter is more up to each person’s personal preference, you begin with the former and experiment with different types of the latter until you have something that works.

In order to start creating content that your audience will enjoy, start by figuring out in significant detail what they want. Your best way of finding out what they want is finding what they search for: the process of doing this is commonly called “keyword research”, since the phrases input to search engines like Google are called keywords.

To do keyword research, start with some stuff that you presently think your audience would search for, and search in a tool such as KW Finder. Scroll down their list of results, checking any boxes for results with high “search volume”: average number of monthly searches for that particular keyword. Then export those results, pick a few that seem particularly good, and search for those terms. Keep at this until your fingers bleed. You’ll thank me later.

After this, organize your newly-made master keyword list by topics. I find it easiest to do this by cutting and pasting Excel, visually formatting things into lists until I have a set of topics. Each topic becomes a page or, if there are a decent number of high-volume keywords in that set, a cluster of pages. The largest cluster of highest volume keywords that you most care about ranking for, you reserve for your homepage. These are the keywords that are central to your product: not only the ones your audience would search for any reason, but the ones your audience would search for with the express intent to buy your product. (Or watch your video or read your article or download your whitepaper or whatever it is you want them to do. In the industry we call this action a “conversion”.)

Once the keyword list is organized by topics, use that to create your website organization. More central pages, containing content whose keywords are more relevant to rank for, should go closer to the root directory than more tangential pages. This is because Google gives more search weight to pages closer to the root. While you’re at this, make sure all your URLs are intelligible, not long strings of letters and numbers. Rule of thumb: a human should be able to look at the URL and know what the page is about.

This brings us nicely into the other miscellaneous bits of head-tag trivia which matter significantly for SEO. Search engine “spiders” (probably called that because they “crawl” the “web”, ha ha ha) are still robots, so there is a decent amount of techie trivia you’ll need to understand and fix in order to make your site perform well for SEO.

Head over to ahrefs.com and do a quick site audit, noting down the 3XX pages (page redirects), 4XX pages (missing pages), meta description tag problems (too short or nonexistent; too long is not a problem since their definition of “too long” is incorrect), title tag problems (too long, too short, nonexistent), and h1 tag problems (too many, nonexistent). Some of these things will be seen by end-users (they’ll notice missing pages, or a title tag that’s too long, since the title tag is the actual clickable text of the search result when it comes up), some of them won’t (depending on the page style, end users can’t tell the difference between an h1 and an h2), but they all matter for SEO. Fix as many of them as possible.

A momentary note on creating content: Make sure your content includes words. This may seem obvious, and yet it’s fashionable at the moment to create text-minimalistic pages with tons of images and fancy graphics. This is an SEO nightmare. Google isn’t great at interpreting images yet, so without alt attributes, all those fancy graphics are useless for a search spider, and while they might wow a human audience, good luck finding one when you’re stuck in the deserted wasteland that is page 2 of Google.

Once you have good pages with relevant verbal content arranged in a sensible organization that’s easy for search spiders to crawl, you can move on to off-page SEO. This takes many forms, the most prevalent of which is standard link building.

Because an outbound link can take a user off a page, Google counts outbound links on pages as sort of “votes” for the pages they link to. Having a significant number of inbound links to your site from reputable, relevant sources is akin to having a significant number of votes from influential people in your field. And likewise, bribing for either votes or links is bad, but asking for them nicely can prove useful.

The art of asking nicely for links from reputable, relevant sources is called “link building”, and the standard method is to get on Ahrefs, search for a domain that’s related to yours – it could be a competitor, or an expert in your field – and click on “backlinks”. Make sure links are “dofollow”, as a “nofollow” link gives no “vote”; in English, unless your site exists in multiple languages; and one link per domain, to prevent duplicates. If there are still several thousand results and you need to narrow further, use criteria like filtering for a certain type of website (blogs, ecommerce sites, forums, etc), or filtering the results to include the first word of your most important keyword.

When you’ve exported these lists for a number of comptitors or domain experts, stick them all in a spreadsheet and start systematically going through them. To do that, click on the link, but before you read the content, try to find the author’s contact info. Since the end goal is to send them an email, if you don’t have their email (or contact form or whatever kind of personal contact), the whole exercise is moot. Once you have their email address, then you can read the article to see if you’re likely to get a link from them for your client. If so, draft up a nice email that gets straight to the point, containing these four things and nothing else save some nice-sounding phrasing:

  1. Exactly what you want them to add. I’m talking act as if you could directly push your changes live to their site right now, what would you change? Leave nothing at all up to them; spoonfeed it all right to them. Rule 1 of getting people to do what you want is making it as easy as possible.
  2. How adding this link will help them. If you’re also proposing copy additions, make sure you note that too. Don’t be long-winded about it, just imply that their readers will appreciate the additional info.
  3. The exact links, to both their page which you are referencing and the page you want them to link to. When you do this, don’t do links with anchor text: when receiving emails from people they don’t know, nobody wants to click a link they can’t see, since it could be malware or something. Instead, put the entire link, even if it’s long, in parentheses. Being able to see the link content will put people more at ease.
  4. A signature with your full name, job title, company, and email address. This is another way to put people at ease. By knowing who you are and who you work for, and having your contact information, they trust you more.

A common pitfall that you’ll need to avoid with SEO is running down rabbit holes. You will always have more data than you need, and if you try to incorporate all of it, or be anything less than optimally efficient with it, you will spend your entire damn life on one project. This is the reason that you should find the contact info before you read the article: if you spend all that time reading thousands of articles that may or may not actually get you links, you waste a ton of time. Thus is the peril working with the internet.

And as a final note: there are many, many things you can do with a website where it is crucial that you implement SEO processes as you do them. One of these is a site migration: one of my clients (Seal Software) is working on one now. Here, you must be even more discriminating with which data you use – since some pages are not going to exist on the new site so optimizing them will be useless – and even more careful to implement the precise processes you need, to transfer as much traffic from the old site to the new one as possible.

Priorities, Talks, and an Entirely-Un-Asked-For T-Shirt: Week 4 at Upgrow, Inc.

This week, as I promised I would do last week, I made a priority-ordered list of what needs to get done outside of work. Or, more properly, I decided on the One Thing that I’m going to do as much as possible for the next month, then laid out a rough timeline of the priorities for the rest of my apprenticeship.

In short, for the next month, I’m going to continue focusing on improving my Adulting On My Own skills, both in and outside the workplace. That means making sure I’m financially stable for the long haul, cultivating good relationships with my housemates as well as my coworkers, working on improving my marketing skills, and—this is the hard part—maintaining connections I made while I was staying at Reach.

I also got done a handful of other things which I didn’t plan to do in the last update but which are nonetheless very important. First off, I’ve started having weekly meetings on Friday evenings with Yitzchak, my Praxis pal who finally arrived in SF to work at the office in person about two weeks ago. This past meeting, we discussed humanism, religion, morality, and all other kinds of very fun deep topics.

That’s not all, and this last one surprised me too. After work on Tuesday, I was researching one of our clients in the hopes of understanding their industry better, and I ran across an industry talk the next day that the client was hosting at their office! I could not believe my luck and signed up for the talk right away, telling my advisors at Praxis that I couldn’t make the weekly Wednesday call. After work, I took a leisurely walk down to the office, had a nice dinner at a nearby burger place, and went to the talk. There were all kinds of cool people there, and the actual talk itself was about all sorts of cutting-edge time series database related stuff. I got to see a dashboard for a software that won’t exist until September! (No, I can’t show it to you, you perv. Wait till September like the rest of the public.)

After the talk, I chatted with a bunch of different people with the express intent of getting LinkedIn connections, because I’d eat a burrito with a fork before I’d walk away from a social event without making online connections. Turns out, one of the people I ended up talking to was the person on the client staff who hired our company in the first place! We had a super nice chat, discussed tech and marketing, and at the end she not only told me to help myself to the company-branded stickers they were handing out, she also grabbed me an entirely exclusive t-shirt and branded socks! I was literally so stoked. Nobody else got a t-shirt or socks! What did I do to deserve this privilege?? They’re really nice socks and I actually haven’t even taken them out of the packaging yet because they’re so awesome, although I did wear the t-shirt to work on Friday.

Anyway. It has officially been a month at this new job! Month 1 of 6 complete, and honestly it’s going pretty well. I’ve got a cheap and small but nice room in a group house with a signed lease and a security deposit, a relationship with my boss that’s moving in the direction of amicable, weekly discussions with a coworker that I’m becoming very good friends with, and some sweet company swag (and an open offer from my boss to maybe go to other client events to gather intel? what?). Next week, I’m going to work on doing a little bit more of all my stated goals, since I didn’t actually get around to making them in the first place till Wednesday and so I only had half a week to start implementing them. We’ll have to see how that goes; stay tuned!

Places, Past and Future

We met in Baltimore
when the hot lights of the dance floor drove us out to the gardens
before the pouring of the rain drove us back in.

We got engaged in Pittsburgh
under the warm yellow glow of artificial lamplight
and I handed him the ring I’d bought with less ceremony than I’d like
though he seemed to love it anyway.

We’ll get married in San Francisco
surrounded by the warm California sun
by new and old friends
and by possibilities for our future spent together forever.

We’ll grow old among the stars
with the distant descendants of humanity at our side
accomplishing feats and forging friendships we can’t even dream of today.

And we’ll die
if in fact we must die
after impossible problems have been solved
after incomprehensible battles have been fought
after amazing spoils have been wrought:
we’ll die knowing that whatever else has come to pass
humanity has won.

Too Much To Do, Not Enough Time: Week 3 at Upgrow, Inc.

I was sick half of this week, which makes it a bit difficult to pass any significant judgement, but it seems to me that I’ve done pretty well at doing what I wanted to do last week, both in and out of work. I feel like I’m steadily reconciling with my boss, figuring out how he wants me to work for him and working that way. I’m still working on it, but it seems he dislikes me less now, and our weekly 1:1 exclusively contained discussions of projects, instead of its previous status quo of being mostly about the behaviors of mine that he disliked.

I’m also improving at my proper job description. I’m learning how to do a number of things, including link building and SEO article writing, with decent efficiency and correctness of technique. The biggest thing I’ve learned about SEO is that you always have way more data than you can or should try to make sense of, so you absolutely need to winnow it down before trying to work with it, since otherwise you end up going down time-consuming rabbit holes doing things which are not optimally efficient.

The most notable out-of-work things I’ve done this week are completing the move into my permanent residence, signing an Official Adult Lease™, and purchasing a bed, which isn’t that big a deal in the scheme of things but just feels like an Adult thing to do. Staying in a community center for a month was incredibly fun, but it also made me feel a bit like I didn’t have a home. Now, I feel more like I live in California.

My biggest current problem is optimization of time. Now that I’m no longer spending most of my non-working time hyper-analyzing past interactions with my boss to figure out what I’m doing wrong, I have time to do other stuff, but I need to understand what that other stuff should be. Possible candidates for top priority slots include, but are not limited to, resuming work on my tech projects, updating the websites I’ve made using what I now know about SEO, documenting some of the cool and important stuff I’ve learned about SEO from the standpoint of a beginner getting started, doing research on our current clients and learning tons of stuff about especially the tech-focused ones so I open avenues to potentially transition into working for them after I’m done working here, continuing to work on marketing certifications, re-starting work on tech certifications, reading books on business, and going to the community center I used to live at for purposes of networking.

Still, I’m optimistic. It’s very nice that we’ve made good enough financial choices that we don’t have to worry too much about money, even though we’re effectively paying twice the usual rent because we needed to put down a security deposit. I forgot to eat breakfast before I left this morning and I was able to buy myself pancakes at a cafe near work. It’s nice to have a place to call home, though I’m still working on thinking of it that way. (A definition of “home” that’s heretofore been static for thirteen years kinda does that.) And as with every week here, I’ve been meeting and hanging out with tons of interesting people.

The Importance of Perseverance and Umbrellas: Week 2 at Upgrow, Inc.

This job is getting very difficult, but not for the reasons you might expect. Yes, marketing is itself hard, but it’s actually been harder acclimating to the work environment. Not just the startup environment, though that definitely contributes, but my interactions with the people there. I made a few stupid social mistakes early on, and I have a few personality clashes with my direct supervisor which I need to work on.

Some of the most important things I’ve learned from this job so far, then, have actually been about how to work through such problems. I am learning a ton about marketing, because my supervisor is ridiculously good at what he does. But I could have learned marketing from any expert marketer: having an expert marketer that I don’t naturally get along with very well is an additional level of challenge, and I’m learning a lot about the social rules of the white-collar workplace as a result.

I would be lying to say it’s all sunshine and roses: actually, I seem to have brought a rare rainstorm to sunny San Francisco. But like the umbrella that snapped in half on the first day after I moved here and left me to walk soaking wet for miles, these difficulties are teaching me perseverance, as well as the importance of having a good umbrella.

As to the actual marketing work, it’s incredibly interesting. I never realized SEO could be so complicated: the last time I checked, keyword stuffing and cloaking were frequently-used tactics. Now, it’s all about knowing your audience and getting voluntary backlinks from reputable sites.

One of my recent projects I’ve been working on for a handful of clients is that latter, we call it “link building”. This encompasses many things, from posting useful answers on forums to giving helpful information to reporters, but what I’m currently working on is getting links from individual peoples’ blogs. Basically, the process is that I figure out some people who blog about the thing our client does, and I see if there’s a place on their blog where they’d improve their content by linking to our client. Then, I send an outreach email, asking for the link.

Outside of work, my life is less difficult and more surreal. Living with rationalists, I keep having very interesting conversations. Interesting, both in the sense of intriguing and strange. People here regularly use phrases like “terminal value”, “cached thought”, “operational definition”, and “cognitive dissonance”. Everyone knows the ANI/AGI/ASI distinction. I have only met one other person who is not currently working as a programmer. And yet, we have these discussions laying about on couches, playing stupid card games, and drinking wine out of boxes. I went for cheap Chinese with some dude who works for Google.

Since I’m living in a community center until I can move into my permanent residence, there are all sorts of people and events which come through here. I’ve learned about the YIMBY movement, about animal rights activism and the clinically proven benefits of meditation. It’s so interesting learning about so many different points of view and political movements that I’d never heard of in any great detail before.

California has, in general, been a healing force for me, mostly due to one of the first friends I made here. No later than two hours after landing in CA, I met an absolute ray of sunshine who helped me through the rain, and continues to do so. He’s made awesome, healthy food that I’ve been able to take in for lunch sometimes, led some of the best meditation sessions I’ve ever attended, and generically made the whole environment and experience very positive. We’re both moving out of the community center soon, but I very much hope we can stay in touch after we’re no longer housemates. This friend, along with my fiancé and my mom, have been my umbrella.

I dearly hope this metaphor made sense.

5 Tips for Living On A Budget in San Francisco

I just moved to San Francisco for a new job at a digital marketing startup, which means I’ve been living in the single highest cost-of-living city in the United States. And, I’m making about 100k less than that article says you should be to “live comfortably”. If you’re moving to SF anytime soon, if you’re living in SF and you’d like to be more financially stable, or if you just want an entertaining read about how living in SF works, here are 5 tips for that.

#1: Want Less Stuff

This is kind of a meta-tip for making your whole life better, not just compensating for the crazy cost of living in San Francisco. It’s based on this article by Mr. Money Mustache, which is generally a great blog I’ve been reading that has excellent financial advice, and that I’ll be citing multiple times in this post.

Essentially, it is what the heading says. Instead of denying yourself things you want, which uses up mental energy, just want less stuff. Decide that you’re happy with how you’re living right now. There are a ton of tricks to do this, such as closing your eyes and imagining you had suddenly gone blind, imagining your entire life while adjusting to being blind, and then suddenly miraculously regaining your sight. The general concept here is remarkably similar to Classical Stoicism.

A similar idea, if you’re a bit further along in your career, is getting rid of “I can afford this now” mindset. My mom tells a story of a friend she had in college. When the two of them met, they both got appliances from the Scratch and Dent and clothes from Goodwill and generally did all the things that broke college students do. But after they both became established in their careers, my mom’s friend stopped buying cheap. She started getting clothes from Target and even more expensive stores, buying brand-new cars, and overall spent a lot more money on luxuries. Meanwhile, my mom was still shopping at Goodwill and buying used cars. And they were both a little incredulous! My mom’s college friend said something like, “Why are you still shopping like you’re broke, you can afford to get nicer things now”, and my mom said something like, “Why don’t you have a million in the bank yet”.

Paying $20 for a t-shirt at Target instead of getting it at Goodwill for $3 adds up, and paying $25k for a brand-new car instead of getting a comparable older used one $12k adds up faster. You get to a million in increments of ten, and savings is critical to both current and future survival.

#2: Get Roommates

If you’re on a tight budget, or even if you’re just being financially sensible, you are not going to afford your own apartment. The sooner you come to terms with that and optimize for it, the better. Even if you make enough dollars to afford it in principle, if it would cost more than a third of your income, you can’t afford it. Unless you want to be living hand-to-mouth and perpetually spinning that hamster wheel, you can’t afford to not save at least a third of your income.

Here’s my current budget, because you might not believe me otherwise. Through my Praxis apprenticeship, I’m working full-time and making $17 an hour. My fiancé is making $15 working as a manager at a local grocery store. Multiplying that out, we get around 5k a month gross revenue. We have a roommate situation set up, where we have one small bedroom in a house with five bedrooms (that presently houses seven). We pay a little under 1k a month in rent. Other budgets include transit (I take BART to and from work, which adds to about $200 a month), food (we all take turns buying groceries so a very generous food budget is $500 a month), my fiancé’s student loans and my Praxis payment (~$600 a month total), and a few other things. In total, we spend a little more than half our total income, and save the other half.

One-bedroom apartments in California start at $1700 a month, with a shared bathroom, if you’re lucky. If you want your own private bathroom, you’ll be spending $2200 or more. That’s roughly as much as my mom is paying for a mortgage on her five-bedroom three-bath family home! So give up on the idea of having your own place, and optimize for roommates.

I found our current group house through a Facebook group meant for rationalists and effective altruists living in the East Bay. There are many such groups for many different people-types, and if you go looking, you can find one for a type which matches you pretty well. That will be your best place for house-hunting, or more aptly, roommate-hunting. You’ll want to shop around before you arrive if you can, but if you can’t, it’s not a big deal: stay at a hostel (there are many people-type-specific hostels as well; I’m staying at one for rationalists called Berkeley Reach) or an Airbnb as you shop around in person.

Find a group house you like and roommates you enjoy spending time with. Don’t worry about proximity to your work or to a BART stop – you probably won’t get it, so just walk or get a bike (/electric scooter/electric skateboard /etc). Do worry about price, though, because private rooms range between $1500 for a bit of a pricey one all the way down to $950 for a really awesome find. If you’re moving out here as a single person on a tight budget, your best bet is to find a shared bedroom; I’ve seen some for less than $700.

#3: Find All the Cheapest Places for Food

There are several ways to do this, so I’ll mention them all, since I’ve used them all. First, you can look on Google Maps around the areas you’re considering staying and look at their prices online; second, you can look up keyword phrases like “cheapest places to buy groceries around [location]” and read articles and watch videos about it; third, you can go around to the local stores with a list of all your common staples and make a price-comparison spreadsheet; fourth, you can keep all your receipts and cross-check prices for things you buy often. I did all four, in that order.

Looking on Google Maps was a bit useful for pre-moving planning, but not all that useful; I noticed that a lot of stores, especially the small ones that turned out to be the cheapest, didn’t have their prices listed online anywhere. Still, in terms of figuring out what’s in your area, this is a good first step; just don’t spend too much time on it. Reading blogs and watching videos is very useful for finding insider info: there’s a 99 cent store around here that I found on a Youtube video. Don’t get too caught up in it and forget your other moving plans, though.

I highly recommend a spreadsheet as a way to figure out prices for staples, but don’t get too carried away in comparing prices for things you don’t buy often, because then your spreadsheet will be brutally long and you won’t want to actually go around and compare things. I also recommend keeping receipts, because actual after-tax price is not the same as the price listed on the price tag, and prices can change, etc etc.

#4: Don’t Own a Car

Cars are really expensive, especially in SF. They’re expensive to drive, expensive to park, and expensive to insure. In addition, if you so happen to live and work on different sides of the bay bridge, you’re going to spend a huge amount of time in traffic. I saw an ad in a BART car once that said “because walking to BART beats sitting in traffic” and I’ve found that very accurate. If you live near work, walk or bike or whatever to work. If you don’t, walk or bike or whatever to BART and take BART. Either way, cars are expensive. (And, like, also, saving the earth and stuff.)

#5: Track Your Finances

The best thing you can do when you have a tight budget is keep track of it well. There are a few ways to do this, but they all boil down to a simple concept: spend your money on paper before you spend it in real life. If you’ve already allocated—”spent”—every dollar before you ever pull out your wallet, you’ll know exactly how much you can spend and what you can spend it on, and thus, you’ll never have to worry about whether or not you can afford something.

There’s a simple paper-and-pencil strategy for this, and then there’s a financial tracking app I use now that I can recommend. With the paper-and-pencil strategy, start with your current funds, then mark down your foreseen future revenues and expenses and make a short calendar with important dates (paydays, bill due dates, etc.) and mark how much you’ll have after those points. Then, using those numbers, calculate how much to spend and save. If you want something quick and dirty you can do in five minutes so you can stop freaking out about money, this is a perfect strategy.

If you have a bit more time and would like a comprehensive long-term solution, you can try Fast Budget. It’s an excellent financial planning app available for iPhone and Android which separates your financial world into categories and sub-categories. First there are sets of incomes and expenses, and then each income or expense can have components for individual things you’d like to keep closer track of than usual. Say you have a budget for groceries, but you know you tend to over-spend on soda, so you create a sub-budget for soda under the groceries category to track your spending on that one particular thing.

You can constantly re-arrange this budget to suit your needs, and even sync your credit cards and bank accounts (though I haven’t personally needed to do this, I just keep receipts in my wallet and input everything into the app at the end of the day). Also, you get a nice-looking Overview page with neat pie and bar charts. Everyone loves pie and bar charts.

And That’s All!

These are the most important things I’ve needed since moving to San Francisco. There are a handful of other things relating to the process of moving in particular, but I’ll cover those in another post. If this helped you out, please comment it below!

Where Did I Disappear To? Week 1 at Upgrow, Inc.

To anyone who doesn’t follow me on social media, it may seem like I’ve just up and abandoned this blog. In truth, what was happening was a very frantic cross-country move, and my first week at a brand-new job at a digital marketing startup in San Francisco, California. It’s a trusim that one can either explore or exploit: that is, one can find new opportunities, or utilize the ones one already has. There is a third option, though: explain. So in all, you can either find new opportunities, utilize the ones you’ve got, or write about what you’ve learned from it all. At present, I’ve done my exploring and am exploiting as best I can, but that doesn’t leave a lot of time to explain.

So from here on out, since I do like documenting stuff, I’ll be writing a series of blog posts about what I’m doing at my job, how I’m living in California on a crazy low budget, and as always, general stuff about life, the universe, and everything. Y’know, this blog’s usual content.

Today, I’d like to explain what I’ve been doing in my first week at Upgrow, that marketing startup I mentioned. I’ll talk about my finances in a later post, write about a really interesting guest speaker we had on our weekly Praxis Wednesday call this past week, and maybe I’ll also write about the process of moving cross-country in ten days.

Our office is in a co-working space in downtown San Francisco. The room only has seven desks in it, two of which are presently empty. (One of these will be filled by my Praxis pal Yitzchak, who decided to move on a longer timeline and work remotely in the interim.) This small office means that there’s no complicated structure of meetings that needs to happen: to communicate something company-wide, all we need to do is say it, or post it to the general Slack channel.

The biggest thing I’ve learned this week is how hectic startups can be. Last week—my first week—I took on projects for three of our SEO clients; this week, I’m adding the other three. I’m running as fast as I can just to keep up. As I was just starting Praxis, an alum talked about how starting his apprenticeship felt like drinking from a fire hose. Now that I’m here, I understand the sentiment.

On top of working, I’ve been completing some marketing certifications, reading up on the industry software, and generally making myself a more valuable employee. My direct supervisor is big on trying to make sure that we don’t have to take work home, but I enjoy watching marketing videos as I get ready in the morning. I’ve never much liked the idea of “work-life balance” anyways: if you care enough about either one, you’ll figure out how to fit them in. My mom worked rigorously at multiple startups while pregnant with me; ’nuff said.

The project I’m most proud of from this week is the one I did started on my very first day. One of Upgrow’s founders, Ryder, asked me to take over the LinkedIn marketing for one of our clients, a lock and security company called ASSA ABLOY. I created all the posts for this week for both of their campaigns (which works out to one post per day), and on Friday I made the ones for the next week. Turns out, I don’t even need those till the week after (that is, starting next Monday, 3/25 instead of 3/18), so I’m ahead of schedule.

This week, I’m continuing the projects I’ve already been assigned (they include suggestions for blog categories, keyword research, and local marketing with Google MyBusiness) and adding several new ones, for clients including Seal Software, InfluxData, and Mercer Advisors.

As a final note: after I get settled in this role, I’ll be resuming my study of machine learning and add more PDP updates, but I want to make sure I’m doing well at this new job first.

PDP 5

Hey all! This update is coming in a little late, since I’ve been working through a bunch of interviews and projects for companies recently. After I get the definitive yes/no from those companies, I’ll see if I can post the projects here, but until then, here’s this week’s update.

This week, I learned in depth how to combat overfitting and faulty initialization, preprocess data, and a few state-of-the-art learning rate and gradient descent rules (including AdaGrad, RMSProp, and Adam). I also read some original ML research, and got started on doing my ML “Hello World”: the MNIST problem.

The section on overfitting was complete and explained the subject well, but the bit on initialization left me questioning a few things. For example, why do we use a sigmoid activation function if a lot of the possible values it can take (near 1, 0, and 0.5) are practically linear? Well, the answer, from the cutting-edge research, seems to be “we shouldn’t”. Xavier Glorot’s paper, Understanding the difficulty of training deep feedforward neural networks, explored a number of activation functions, and found that the sigmoid was one of the least useful, compared to the hyperbolic tangent and the softsign. To quote the paper, “We find that the logistic sigmoid activation is unsuited for deep networks with random initialization because of its mean value, which can drive especially the top hidden layer into saturation. […] We find that a new non-linearity that saturates less can often be beneficial.”

Within the course I’m using, section 41 deals with the state-of-the-art gradient descent rules. It’s exceedingly math-heavy, and took me a while to get through and understand. I found it helpful to copy down on paper all the relevant formulas, label the variables, and explain in short words what the different rules were for. Here’s part of a page of my notes.

I did teach myself enough calculus to understand the concepts of instantaneous rate of motion and partial derivative, which is all I’ve needed so far for ML. Here was the PDF I learned from, and which I will return to if I need to learn more.

The sections on preprocessing weren’t difficult to understand, but they did gloss over a decent amount of the detailed process, and I anticipate having a few minor difficulties when I start actually trying to preprocess real data. The part I don’t anticipate having any trouble with is deciding when to use binary versus one-hot encoding: they explain that bit relatively well. (Binary encoding involves sequential ordering of the categories, then converting those categories to binary and storing the 1 or 0 in an individual variable. One-hot encoding involves giving each individual item a 1 in a specific spot along a long list of length corresponding to the number of categories. You’d use binary encoding for large numbers of categories, but one-hot encoding for smaller numbers.)

The last thing I did was get started with MNIST. For anyone who hasn’t heard of it before, the MNIST data set is a large, preprocessed set of handwritten digits which can be categorically sorted by an ML algorithm into ten categories (the digits 0-9). I don’t have a lot to say about my process for doing this circa this week, but I’ll have an in-depth update on it next week when I finish it.