Five months ago, I picked up a new job: every morning, I wake up at 6am, hop on my bike, and transport 50 bagels from Beauty’s Bagels to Awaken Cafe. After a quick cup of coffee, I bike on to my next job, my real job, running a tech company.
I earn $35 a week and get free coffee whenever I want it.
When I describe this daily routine to new friends, most look at me like I’m an idiot.
“You spend all of your time working on Clef and as a hobby you’ve picked up an extremely low paying job that pulls you out of bed at 6am and requires physical exertion. Uh, what?”
When my hands are freezing on dark mornings, I often ask the same question. From a financial perspective, it’s pretty clear that this is not smart. Running a startup, time and energy are the two most important things I have — trading them for a tiny sum of money, and a free cup of coffee, is illogical.
But time and money aren’t everything: from a holistic perspective, I’m convinced the benefits of taking this second job are worth it.
Since I left college and started working for myself, finding structure in my day to day life has become very important. The biggest change I’ve made has been adjusting my schedule: in the middle of last summer, I switched to an early morning wake up (between 5:30 and 7am, optimizing for 6 hours of sleep). Unfortunately, despite the promises of proponents of this approach, my body has not adapted well to the shift: every day, getting out of bed is one of the hardest things I do .
Having an early morning job provides a concrete task that I need to get up and do, making the mental battle of escaping my blankets much easier.
As the founder of a startup, I spend nearly all of my time with employees of other technology companies. While this community is wonderful, spending too much time in any homogenous environment can feel numbing.
As part of my delivery job, I get access to two new (and very different) communities. Even if my interactions with them are limited, the exposure and human interaction just Feels Good.
For 90% of the day, I am my own boss. I set my own schedule, judge whether I’m being effective, and tell other people what to do. Combined with the constant glorification of engineers and founders in the tech industry, it’s easy to feel self important
When I’m delivering bagels, it’s the complete opposite. I’m just another employee. No one knows (or cares) that I’m an engineer or that I’m starting a company and only my bosses decide whether I’m effectively doing my job. Each morning, my bike ride transports me outside of the startup bubble and reminds me that most of the world isn’t so absurd.
I like to think I work hard. Every night, when I crawl into bed, I’m exhausted by all I’ve done that day.
Working hard outside of tech, however, is…different. After a few weeks of deliveries, I realized that my hours and exertion pale in comparison to the founders of the two small businesses I work for. The founders of Beauty’s Bagels are in every morning at 5am, on their feet all day making bagels in front of a huge oven, and only take Monday off.
Getting perspective on real-world hard work helps me calibrate my own expectations for myself.
Really, when I consider my second job, the earned petty-cash and free coffee is just the cherry on top.
Jesse Pollak delivers bagels and is working to save the internet from passwords. Follow him on Twitter here.
 Not sure why this is, but once I’m out of bed, I rarely feel tired for the day.
The first blog I ever kept was updated every day. Each night, every night, I’d return home, pull out my computer, and stare at my screen until words materialized on the page. The strategy produced a lot of mediocre, mundane content and an occasional flash of something better. My mom loved it.
The second blog I’ve ever kept (you’re on it right now) is not updated every day. The posts are few and far between. At best I publish something new once a week, but more often than not it’s twice as long. Part of this is that I spend less time writing — I don’t sit down and force myself to write every night—but there’s another contributing factor: the constantly drafting mentality.
When I think about the internet writers I admire, I always imagine them having a huge collection of drafts. When they want to publish something new, these writers open up their collection, choose a piece that’s finely-aged, refine it to perfection, then publish it to wide acclaim. In their free moments, they funnel new ideas into this breeding ground and gradually massage old ideas into well-thought-out essays. The process is iterative, seamless, and easy.
Following in these writer’s footsteps, in my latest writing, I’ve adopted the constantly drafting mentality:
Every time I have an idea for something to write, I add it to my list. When I have time to write, I do things: (1) I go through my idea list and turn thoughts into a drafts; (2) I go through my drafts and refine them towards a “completed” product. When a draft is ready to publish, I publish it.
Unfortunately, with this strategy, the vast majority of things that I write never see the light of day. My draft list is not the oak cask that ages essays to perfection, it’s the early retirement home where they go to die. Yes, you guessed it, this hyper-effective strategy is an idolization-based figment of my imagination.
Drafting is an extremely effective writing strategy. Rarely is my first piece of writing the best incarnation of an idea I’m trying to convey. In fact, more often than not, it takes me more than one draft to figure out what the idea actually is. Just like building a company, constantly seeking and addressing feedback on writing can turn a wayward idea into a well thought out end product.
Constantly drafting has not proved to be an effective writing strategy. Just like a product, nothing I write is even close to finished — and it never will be. Creating a workflow around drafting has pushed me towards an unreachable goal of perfection and stifled my output.
Draft carefully and consciously.
When I was a kid, I was never particularly good at turning off the lights. My parents reminded me often, but I somehow always managed to forget. There was no malintent, I wasn’t trying to kill the planet or waste money, it kind of just…happened.
Since moving into my own home, I’ve been dealing with the opposite problem: an obsession with turning the lights off.
Bathroom break? Better flick off the lights in the kitchen. Going to bed? Better leave the ground floor dark. Leaving the house? Better do a full-fucking-fledged sweep of the house to ensure nothing is on.
In the mornings, as I‘m heading from my bed to the front door, I have a rhythmic light-disabling routine: bedside lamp off, hall light on, room light off, stairwell light on, hall light off, living room light on, stairwell light off, open door, living room light off, out. It’s finely tuned to be efficient and effective and it consistently makes me feel like I’m putting way too much thought and energy into my light-killing strategy.
So what changed?
The obvious answer is that the financial burden is now on me, rather than my parents. I pay the electric bills, so there’s much more transparency into how turning off the lights effects my bottom line. Ultimately though, the savings from turning off the lights are minimal (tens of dollars, split three ways) and the transparency isn’t that increased: I’ve never consciously examined our electricity usage with an eye toward light savings and I don’t compare past bills to see how we’re doing.
I also doubt that it’s because I’ve matured into a more environmentally conscious human being. Though the science telling us that climate change is fuck-worthy-terrifying has only increased, I’d be lying if I didn’t say that over the last few years my involvement in the movement has waned. I can’t say I’m proud of this, but it’s the reality.
So, what turned me into an avid light manager? I think it may be about control and order.
The largest part of my life right now, Clef, more often that not feels out of my control. I can tirelessly improve, and distribute, our product, but at the end of the day, we’ll need more than our share of luck to ‘succeed.’
With the success of something I care so much about seemingly out of my hands, I think I’ve worked to find other areas of my life where I can be in control: I keep my room cleaner than ever before, I structure my days pretty strictly, I cook almost all my own meals, and I do a damn good job of turning off the lights.
Jesse Pollak is a light-turning-off aficionado who occasionally writes about things that won’t bore you to death. Follow him on Twitter here.
Today, five months later, we’re calling an end to the experiment and turning on our internet.
Over the last five months, I’ve learned a lot about how I use internet, how it impacts my relationships, and the power that comes with better understanding my addiction to constant connection.
This essay attempts to pick apart those learnings—the goods and the bads—and comes to no conclusion, just a better understanding.
Working at a startup, the internet is the channel to our business. Wherever there’s internet, there’s the potential for work—we check our email, we respond to support issues, we fix bugs, we deploy code. With internet practically everywhere, this means that work creeps into every aspect of our lives.
Our old home in San Francisco still has the 3rd most production deploys of any location in Clef history (behind our two offices). I read and sent more emails in bed there than in all my years prior to starting a company. It wasn’t out of the ordinary for me to wake up in the middle of the night, see an email on my phone, and fix a bug before going back to sleep.
In many ways, this constant connectivity is wonderful. It allows us to do everything faster: faster email replies, faster bug fixes, faster recognition of potential issues. This speed is one of the things that’s enabled the current startup boom.
It’s also extremely draining: when all you care about is the success of a company, and you’re constantly in a position where it feels like you can work to make that success more likely, it’s easy to irrationally ignore the need to disconnect.
When we decided to turn off the internet at home, we did it to actively combat this uncontrollable urge. Newly disconnected, our goal was that conversation, relaxation, and social connection would become the default at home, rather than the subconscious pull back towards our inboxes and editors.
We’d still be able to work as much as we wanted, but our work-times would be distinct and discrete, rather than abstract and eternal. We’d be in control.
It was a thesis that we decided was worth testing for a week or two, so we delayed setting up internet in our new home. A week turned into a month and a month turned into five.
At the core, our thesis proved entirely correct. At home, even though I still had my internet connected phone, I was consistently more disconnected and relaxed. It felt really good in so many ways.
I got more sleep. With internet, it was easy to stay up late on my computer—over the summer, I went to bed between 12 and 1am every night. Without it, I went to bed between 10:30pm and 11:30pm. Those extra hours of sleep helped me switch to an earlier wake up and more productive mornings.
I watched less TV. With, I spent somewhere between 5 and 10 hours a week in front of a television at home . Without, I trimmed that intake to zero and replaced it with more writing, thinking, and reading.
We traded screens for conversation. With, it was normal for the three of us to sit at our kitchen table for hours with our computers open. Without, long conversations on our couches about non-internet things are the nightly norm.
Not having internet at home taught me how addicted I am to continuous connection. As I started to understand and feel this addiction, and as I practiced moving from a connected to a disconnected space, I was able to translate the things I learned at home to my behavior in other, connected, places (i.e. everywhere). Over the last 6 months, I’ve significantly improved my ability to keep my device in my pocket and engage in a meaningful way with the people around me—no matter what’s going on online.
Really, I just felt more in control — like I could decide when I wanted to tune in or tune out. It felt empowering.
Unfortunately, like every decision, turning off the internet at home had it’s downsides.
Turning off the internet forced constant, hard, choices around when to work or not work. Not being able to just connect at home turned tasks that might have taken 3 minutes before (like fixing a bug) into a serious decision: is this issue important enough that I should leave my home, head to our office, and resolve or can it wait until tomorrow. This consciousness is exactly the reason we opt-ed to disconnect, but that doesn’t make it any easier to process. Constantly making these decisions is exhausting, especially when guilt can often accompany the non-work choice.
Coding at home (for fun or profit) is much harder without internet. When you’re experimenting with a new technology, the internet is your best friend —having to look up questions on my phone can be really frustrating .
Without internet, eating schedules for long work days are harder to navigate. Mark, Brennen, and I cook and eat 90% of our dinners together. When we had internet, this usually meant heading home around 7:30pm, cooking dinner, then returning to work or watching some TV. Without internet, when we left for home, we eliminated a huge number of post-dinner activities. This meant that we cooked nearly 100% of our meals at work. Our setup there is awesome , but it meant we spent nearly all of our waking hours in one place. No matter how many breaks we interspersed, spending that much time in any once location is exhausting.
Turning off the internet put a negative stigma around going home. The reasons above are part of it, but there was also just kind of an X-factor that is hard to describe—perhaps it’s just that we were there much less. It wasn’t serious, but in a high-stress environment, after 5 months, all three of us could feel that there was a bad vibe forming around being home. And, when we all felt that, we knew that we needed to make a change.
Spending nearly 24/7 with the same people is really hard. No matter how much we love each other (and I love Brennen and Mark very, very much), there are constantly interpersonal issues that we need to process . Any external stresser that can complicate this equilibrium is something that needs to be identified and addressed.
The combination of problems with not having internet proved to be one of these stressers—so we decided to flip the switch (the other way).
Just like our decision to turn off the internet, though, we’re making this one with a provable thesis in mind (that it will relieve an unnecessary stresser). We don’t have a long term contract, and none of us are particularly attached to the actual idea of having internet, so if our thesis proves incorrect, we’ll just switch back. Essentially, we’re experimenting with our environment to see how we can optimize for peace and happiness.
Flipping the internet-on switch feels shitty. It feels like a failure. It feels like I set out on a cavalier adventure—a struggle to be different and act different—and came back with my tail between my legs. Like the internet is just sitting somewhere in some data center cackling.
But, especially after writing this, I’m starting to realize that the adventure isn’t even close to over. It continues with our newly created internet-enabled home, where I’ll be able to apply everything I’ve learned in the last five months to a new environment—hopefully making me a more conscious connector. But even that is just scene .02 of act .01.
The internet is going to consume literally every part of our lives. I’ll hate it and love it and tell it to go away in certain contexts, but then switch tunes and wrap my arms around it and hug it till it gets too big to hug. I’ll try one thing, then try another and it’ll sneer its strawberry-sized internet face and call me a hypocrite (and I’ll happily whisper to my wireless router that, yes, I’m a hypocrite, but at least I’m not a shitty wireless router named ATT63200).
As the internet changes what it means to be me, I’ll try to change what the internet means to me.
Jesse Pollak is someone you’ve probably never heard of and maybe want to follow on Twitter.
 Cutting television out of our lives hasn’t been all good. I’ve never been very into TV shows or movies, but Brennen (and Mark, though less so) is a huge pop culture buff (and movie lover). With internet, he was able to share this love with me and this was really valuable. Turning off the internet eliminated this shared experience, which sucked. I loved not having TV, but I hated losing a real way to connect with one of my best friends.
 That said, I’m fairly certain that coding without internet has made me a much better programmer. It forces me to spend a lot more time thinking through issues before turning to Google for help and it has helped improve my memory of language-specific syntax. Dash has proved invaluable for this.
 One of the nicest kitchens I’ve ever used—huge marble counter top, 6 burner set, dishwasher, big refrigerator, walk in pantry, and tons of kitchenware (and anything that isn’t there, they are more than happy to purchase for us). I can’t express how thankful I am to Michael and Joel (the owners) for creating such a wonderful environment—none of the last 6 months would have been possible without them.
 Over the last month, we’ve actually committed to taking a much more proactive approach to processing these sort of issues. This topic deserves (and will get) a full essay, but essentially, we’ve started doing daily check-ins on the state of our personal relationships. Every night, we sit down and talk about how we interacted and felt each day—what was good, what was bad, what was just really hard. It’s one of the most difficult things I’ve ever done, but it’s also proven to be more powerful and educating than I could ever imagine.
There’s no website I love more than Hype Machine — and I’m scared I’m killing it slowly.
If you’ve never heard of Hype Machine before, I highly recommend you check it out.
The Hype Machine keeps track of what music bloggers write about. We handpick a set of kickass music blogs and then present what they discuss [and stream] for easy analysis, consumption and discovery. This way, your odds of stumbling into awesome music or awesome blogs are high.
In other words, Hype Machine finds all the best new music in the world, curates it, and delivers it to your ears.
On any given day, I spend more than 10 hours a day listening to music they aggregate. Over the last 2 years, http://hypem.com is #1 in terms of browsing time on my computer. When friends ask me what I’ve been listening to, I just direct them to my favorites list.
There’s no listening experience I enjoy more, the user interface is wonderful, unique and intuitive, and the community is fun and filled with friends.
Hype Machine is different from other music sites — all the music they stream is free and publicly available.
Musicians approve songs to be streamed on blogs for free, then Hype Machine (and its community) curates those blogs and streams the songs on their site. In return for the content, Hype Machine gives the artists and bloggers a ton of traffic and exposure.
I’m not well-versed in the details, but from what I do understand, this is a model that all parties are happy with (besides the occasional leaked song off an album that quickly gets pulled off the site).
At first glance, this seems like a huge plus for the company — free music means low margins and an easy path to profitablity. Unfortunately, a limiting factor on their profit-making ability quickly becomes apparent: in their quid pro quo agreement with artists and bloggers, Hype Machine can’t charge for music they are being given (rightly so).
Hype Machine is 100% free for users.
This leaves the site struggling to turn a profit through advertising on the site and affiliate revenue through song purchases.
Ads are a hard game. Services like Pandora and Spotify have been reasonably successful with inter-song audio advertising, but the bulk of their revenue comes through paid subscriptions.
For Hype Machine, I can imagine it’s even harder. Because of the whole “free music” thing, it seems like inter-song audio advertising is off the table. This leaves them with banner ads — an increasingly weak revenue opportunity (unless you have huge traffic that you can effectively target).
While the site has super high user engagement and time on page, little of that engagement is optimal for advertising. When I’m on hypem.com, it’s almost always in a background tab just streaming music — I almost never see aads.
In the iTunes affiliate program, you can make up to 2% of a purchase. Even if each of the 400K unique visitors bought one song per month (I’ve never bought one), that’d still only be $8,000 in recurring revenue.
When you consider that most of the songs Hype Machine is streaming are freely available to download if you click through to the blog or do a Google search, the economics of the affiliate revenue aren’t great.
All this said, with hundreds of thousands of uniques per month, the site seems to be generating enough revenue through ads and affiliate programs to sustain itself — they’ve been around for 8 years and have never raised a round of funding.
In the last month, I’ve increased my listening time, but spent 0 hours on the Hype Machine website.
That’s not the kind of graph you want to see as a startup — especially when all of your revenue comes from display advertising and affiliate fees. Granted, there are some serious concerns about how accurate Quantcast data is, but anecdotal evidence (from myself and my friends who use Hype Machine) backs up this data. I also had an email conversation with Anthony, the amazing founder of Hype Machine, who confirmed the trend:
Your assessment that the web usage of Hype Machine has decreased is true, even if the overall Hype Machine usage across different platforms is not…our iPhone app usage has been growing well, even though it’s not free, which is what I am excited about.
With low-cost listening apps (free on Android, $4 on iPhone), no inter-song advertising, and no affiliate links in apps (neither of mine have them and if they did, they would probably pay out to the app creator), there’s basically no revenue opportunity on users who do the bulk of their listening through non-web interfaces.
I’m terrified that by switching to better listening experiences, Hype Machine’s users are going to slowly kill the site.
We could stop using the platforms that have limited revenue opportunities, but choosing a short-term bad experience is not a recipe for long-term success.
We can tell everyone how awesome the platform is and how much it deserves to be successful (see what I’m doing here?). We can make a more conscious effort to purchase music through their affiliate links. We can buy the native apps they offer.
I’ll also say it right now — if there was a way for me to make a monthly “donation” to Hype Machine, I would do it. Would you?
Unfortunately, I’m unsure that doing those things is enough — I want to find a way to a new way to help, but don’t have a good answer to how. Any ideas?
Do you love Hype Machine and have thoughts on this issue? Let me know on Twitter or in the comments below!
A little less than 2 years ago, I sent this email to [email protected]:
My name is Jesse Pollak and I am a student at Pomona College. I am organizing a hackathon and would love to get the support of Hacker League. If there’s a time someone could talk to me this week via phone, I’d love to make it happen. My phone number is XXX-XXX-XXXX and I’m free almost all week.
Later that day, Abe got us set up on the Hacker League platform. A few weeks later, he connected us with Iron.io who would become the first ever sponsor for the 5C Hackathon. Six months later, I’d get accepted to hackNY and realize that the founders of HackerLeague, Abe, Ian, and Swift, were all hackNY alumni.
Today, I’ve helped throw 3 hackathons and each time HackerLeague has provided an awesome platform for organizing our attendees.
This morning, I was excited to wake up to the news that Mashery (now owned by Intel) has acquired Hacker League. In the words of the Mashery CEO,
“[Mashery] acquired the assets of Hacker League to take a product that makes hackathons great so that we could do more things to support developers,” he said. “It adds something that we can support the developer community with and eventually build parts into our core product over time.”
Without HackerLeague (and all the other support from Abe, Ian and Swift), I can honestly say that I wouldn’t be where I am today. I’m can’t wait to see the amazing things both HackerLeague and its founders go on to do in the future!
Over the last few weeks, I’ve gotten a few emails asking for advice on applying to hackNY. Each time, I’ve rewritten my thoughts on the application process — gradually refining the emails. Over the weekend, I decided to consolidate those emails into one, get feedback from the hackNY community, and publish it for anyone interested in applying to hackNY.
The following is the result of that process.
The #1 thing that we look for in applicants is a serious interest in building cool things. If you’ve built things that other people like, you’re in a great position to be a hackNY fellow. If you haven’t, but you want to build cool things, you’re still in a good position to be a hackNY fellow! The key to both of these situations is convincing the application readers that you’re a builder.
If you’ve already built a bunch of cool things, tell us about them! We want to see the projects you’ve created, hear why you created them, and learn about the problems you solved along the way. Let us know why you had fun and why you’re excited to build even more awesome things this summer!
If you don’t, we want to hear why you *will* build cool things. Tell us about a problem you have and how you’re going to solve it. Tell us about something small that you’ve started working on. Tell us about a class project that you got totally carried away with. Oh, and there’s no better time to start like the present, so start coding and tell us about that (when I applied, I sent an addendum to my application with a project I’d just started)!
Other than being a builder, we look for a few other things (listed below). You don’t need *all* of these things to get into hackNY (I didn’t have them!), but being strong in more than one area is important:
1. Strong coding and/or design ability. Chunks of code you write and/or things you’ve designed will be reviewed by people who are very good at what they do. If they think you’re good too, that’s a big plus.
2. Interest in the startup world. The majority of your summer will be spent working for an early stage startup. If that’s not something that you’re really excited about, hackNY probably isn’t for you. When we’re reviewing applications, we look for things that you’ve done in the past that convey this excitement. If you’ve founded your own company or worked at a startup already, talk about what you learned and why you want to do it again. If you haven’t, tell us about something you did something that felt like a startup and why you want to experience the real deal.
3. Good essays. An unbelievable number of applicants write unedited, seemingly thoughtless essays. If you write well-written, thoughtful, essays, you’ll get ++ by a bunch of the application readers (myself included). It shows that: (a) you can write, which is a great skill; (b) you care enough to put the time and energy into making your application great. Don’t bore us with 1000 word essays, but make sure that you put serious time and thought into them.
4. Online presence. I almost put this one in the next category, but decided to put it here for one reason: if we Google your name and nothing comes up, that’s almost always a negative for you. Make sure that we can find information about you with a simple search. For me, it’s one of the first things that I do. If you write a blog or have other cool stuff come up, that’s a big plus. If we see your Github profile and other accounts, that’s good. If there’s nothing, even when we Google “your name + your school” that’s not good. Obviously, if you have a super popular name then don’t worry about it.
There are some other things that we look at but are not that important (we don’t even ask about them specifically on the application):
1. Past internships. I was one of two first-years in hackNY. Some other fellows hadn’t had previous internship experience. It’s a nice thing to have, but definitely not mandatory. If you’ve worked at cool companies, tell us what you learned in your experiences. If you haven’t, don’t worry about it!
2. School and grades. There’s a reason I put this one last, it’s really not important. If you have a 4.0 at a top CS or design school, it helps. If you have “bad grades” or went to a “bad school” though, we don’t care. Grades are a horrible marker of success in an environment like hackNY, but if you have it, that’s great. If you don’t, definitely don’t worry about it.
To be honest, I was actually at the bottom of the selected applicants, so I almost didn’t make it. After talking to application readers that year, I learned that this primarily had to do with the fact that I was a first-year in college and had only started coding at the beginning of the year.
With those things stacked against me, I was told that I did a few things which led to my acceptance (all following the things above).
1. Even though I’d started coding months before I applied, I already had a few projects that I’d built and were publicly available. The first web application I ever built was one for my college and it already had a 1000+ users who actively used it when I applied. The second web app I built (the one I sent the addendum about) didn’t see the same success, but it was a much greater undertaking where I’d learned a lot (which I could talk about). The second one was also more startup-y, so I think that showed a demonstrated interest in the startup community.
2. I spent a lot of time on my essays (and I think they were good). A surprisingly large number of people put little to no effort into these essays. If you’re already a badass hacker with a bajillion cool projects, that might be OK. If you’re a relative beginner like me, the quality of these essays is going to be really important to your acceptance.
3. I went to a small liberal arts school in California whereas most other students went to engineering schools on the East Coast. hackNY aims for diversity of every type in the program, so I’m fairly confident this helped me a tiny bit. If you go to a school like Pomona, definitely appy!
4. Luck! There’s always a little luck in getting into hackNY (or any other competitive program like this). There are *so* many qualified candidates, and we can’t let everyone in, so we end up saying no to a lot of good people.
If you’re thinking about applying to hackNY, you absolutely should. The summer I spent with hackNY (and BuzzFeed) was one of the best summers of my life. I learned an unbelievable amount about technology and startups, made friends that I’ll have forever, and had more fun than I could have imagined.
Did you know that across modern programming languages there are 4 completely different implementations of the zip function?
Join me as I take a quick dive into how (and why) the functionality of zip varies across different languages with easy to understand examples.
According to Wikipedia, zip (known as convolution in computer science) is a function that “maps a tuple of sequences into a sequence of tuples.” Rephrased and simplified, zip takes a pair of lists and outputs a list of pairs.
When you have lists of equal lengths, the functionality is straightforward. However, when you have lists of differing lengths, there are a few different ways the function can behave.
I was surprised to find out that modern programming languages do not agree on the implementation of this case.
Languages like Python, Clojure, and Common Lisp use the length of the shortest list to determine the length of the returned list of pairs.
I emailed Raymond Hettinger, one of the core contributors to Python, and he had the following to say about this design decision.
The history of Python’s zip() is documented here: http://www.python.org/dev/
The potentially negative side effect of this implementation is that you can destroy the data of the longer input sequence.
_.zip has to be eager), I think we should leave this as-is. Not destroying any of the incoming data is a nice feature, and you can always stop iterating when you see undefined values, or compact out undefined parts of your result.
F# (and map based implementations of zip in Racket) won’t even let you use zip with lists of different lengths.
Personally, I think this implementation runs the least risk for new people in a language: if you try a case, which could return different results across different languages, you’ll be protected from losing data (or generating confusing null values) by the type check.
Ruby may have the best (theoretically) and worst (functionally) implementation of zip: it uses the length of the list that you call zip on (it’s a method on the Array object) as the length of the final list of pairs.
With this implementation, if we use zip correctly, we can get the best of both worlds. That said, it’s a language subtlety that will almost certainly be lost of the vast majority of Ruby users — potentially adding more confusion that it’s worth.
If we look at the Wikipedia definition of zip, we see the following line:
Let denote the length of the longest word, i.e. the maximum of |x|, |y|
This suggests that the length of the longest list should be used; however, Wikipedia turns right back on itself and adds:
A variation of the convolution operation is defined…where is the minimum length of the input words
In other words, no one really knows. I certainly don’t, bringing me to my next point…
If you know more about where zip comes from, what the “correct” definition is, or why there’s such variation, please enlighten us — post a comment, tweet at me, or send me an email and I’ll add any additional information to this piece.
Thanks to Joe Wegner and Avinash D’Souza for reading drafts of this.
Yesterday was my 21st birthday.
Counting down the final minutes of my 18th birthday, I was lonely and nervous. The clock was ticking on college applications, I was struggling with old friendships, and I was terrified of growing up. So, I did what any melancholy teenager would do and wrote my future self a letter. A year later, I read it and wrote another. And so a tradition began.
Each letter gives me an insight into who I was and what I felt at that moment. My language conveys the mannerisms I had; my tone conveys my emotional state; my writings convey my fears, hopes, expectations.
I always find my fears the most interesting. If you pick any random moment from my short adolescent lifetime, you’ll find a version of Jesse who is seriously worried about a handful things. It could be the health of someone close to me, the relationships I’m trying to maintain or create, the organizations I’m a part of, or something I’m building that I desperately want to succeed. The anxiety is tangible.
But, three years in, I’m yet to have a fear that didn’t seem trivially small exactly a year later.
It’s not because the fears aren’t legitimate. Looking back, most of the fears I’ve had were realized in a serious way: the bad things I’m afraid of happening often happen. It’s not because I learned to be fearless. Every year, something new has me up late at night with worry.
Rather, I suffer from a classic human condition. The inability to emotionally internalize concepts which I rationally know.
I understand that all fears fade away and all bad things get less bad, but I feel them nonetheless. My new concerns naturally expand into the empty space left by those which have shrunk with time. I’m caught in a never ending cycle captured through vivid snapshots taken every 365 days, charting my path through it all.
See you next year, Jesse.
November 21st, 2013
Reading this quote by Gloria Anzaldúa gave me a better understanding of writing.
“A poem works for me not when it says what I want it to say and not when it evokes what I want it to. It works when the subject I started out with metamorphoses alchemically into a different one, one that has been discovered, or uncovered, by the poem. It works when it surprises me, when it says something I have repressed or pretended not to know . The meaning and worth of my writing is measured by how much I put myself on the line and how much nakedness I achieve.”
Please read her essay on Third World Women Writers.