writing

The iOSBlog.cc Website: Origins, Goals, and Reflections on an iOS Blog CurationiOSBlog.cc 网站:iOS 博客精选的由来、目标与反思

· Personal essays

Translated from Chinese — .

On this page

Update on May 19, 2016: The “iOS Blog Picks” app is done, and has been renamed Tomato Read. (App names on the App Store can’t contain Apple’s product trademarks, so it can’t contain “iOS”.)

Current Status

Warning: This post is fairly long-winded, but maybe it can offer something.

Not long ago, I once again narrowed the scope of an idea I’d had for a long time, and finally produced the website http://iosblog.cc.

iOS Blog Picks’s goal is to collect the blogs of various iOS developers, big and small, along with a small selection of classic articles and tutorial series.

The website uses Python’s Django framework, with MySQL as the database. Source code at https://github.com/everettjf/TomatoRead/

Components:

  1. Web: that is, what you see at http://iosblog.cc
  2. Chrome extension: a Chrome extension plugin that helps maintainers add websites.
  3. iOS client (to be developed): provides blog subscriptions and viewing of websites on mobile.

As an iOS programmer, this counts as full-stack. Relying on my foundation building websites with ASP back in college, learning Django was relatively easy. Of these three components, the first two that are done are not my strong suit; the third, undeveloped one is what I’m good at at work.

I’m about to start developing the third part. The goal is to make it the first work I publish to the App Store since I started learning iOS development.

History

The seemingly simple http://iosblog.cc has a very long history. This history fully reflects my lack of experience developing personal projects, or rather, fully reflects how hard it is to turn a seemingly simple idea into reality (here the difficulty is perhaps mainly because realizing my idea was outside my familiar skill set).

See here: https://github.com/everettjf/TomatoRead/releases

  • June 2015: I developed the first version using Golang’s Beego. The database used ssdb. A new-to-me language, a new-to-me database. The idea at the time was: build a multi-user website/blog system. Additionally, the frontend used AngularJS, also new to me.
  • August 2015: Before coming to Beijing, I rewrote a version using PHP’s Laravel framework. (During those three months—May, June, July—I’d quit my job and was at home practicing freelancing, but happened not to take on any gigs; instead I “collaborated” with someone who wanted to start a company, building a photography O2O platform. At the time, to make it easy for others to join later, I chose PHP for development. This choice later proved correct: when I came to Beijing for work and handed it off to someone else, PHP probably made it easy to find someone to take it over.) (My brief stint of freelancing didn’t really let me experience true freelancing; I just experienced the first step of starting a company.)
  • November 2015: Although I’d come to Beijing to do iOS development, I “foolishly” still wanted to realize this idea, and rewrote it again using Flask, with MongoDB as the database (thinking back now, was I possessed back then, was my brain water-logged, playing around experiencing all sorts of tech, wasting heaps of my youth). I also made a little record at the time. At this point I named it: http://mostlike.link, the most-liked link.
  • Still November, end of the month: I renamed it again to Snowflake Link http://snows.link, (a little lesson: you’ll always think of a better domain name—until you’ve finally settled on it, better not buy a domain). This time it supported multi-user registration (sign up with a GitHub account), and everyone could use the Chrome plugin (also uploaded to the Chrome store) to add links. This version counts as a fairly full-featured version, basically with no problems for general use. And it was published on V2EX, where everyone still gave a lot of encouragement. See here. This time on V2EX I met wantline; our ideas were very similar, so we collaborated.
  • December: I discussed the idea with wantline and the team.
  • January 2016: redeveloped it. This time, learning from past lessons, I decided to use Python, a language I was more familiar with, plus the more mature framework Django, plus MySQL.
  • Mid-March 2016: After on-and-off development and discussion, https://admire.so went live. In February, I felt that if Admire included both design and iOS, it would be neither fish nor fowl—not focused enough. Also, the new design required remaking the websites’ large icons, which meant I didn’t have enough time to maintain each site’s icon. So I decided that Admire would focus on design. Meanwhile, I took a very early version of the code (roughly late January), and after some simple modifications it became iOS Blog Picks http://iosblog.cc. Because this version is older and quite simple—Admire had since made a large number of changes and added new features—and to give this “ancient” repo of mine a home at https://github.com/everettjf/TomatoRead, I decided to open-source this code. (The code quality isn’t good; it’s only for beginners to get a rough idea of the approach.)

Reflections

A seemingly simple idea, yet developed over so long, and in the end still not realized—just seemingly walking on the right path.

  • Do you want to quickly realize the idea, or try out new tech?
  • To quickly realize the idea, choose mature tech and frameworks.
  • Want to try new stuff? Then go ahead and tinker.
  • Think more, design more—don’t start writing code right away.
  • Keep the idea simple; think about how to realize the idea’s core functionality in the simplest way.
  • Trim the idea; cut out the things that aren’t key or core.
  • The tech to realize the idea is best one you’re good at.
  • Are you sure you want to invest a lot of spare time? Are you sure?

The Future

Admire

A lot of time in the future will go into developing Admire, gradually folding the original idea in in a more appropriate way. (Don’t forget the original intention.)

iOS Blog Picks

Focus on iOS blogs, with ongoing day-to-day maintenance. The iOS client will be tried first, to experiment. I’ll strive to ship the first version as soon as possible.

文章目录

2016年5月19日补充:《iOS博客精选》App已经完成,并重命名为 番茄阅读。(AppStore中App命名不能包含Apple公司的产品商标,因此不能包含iOS)

近况

Warning:本篇博客较为啰嗦,但或许能提供些什么。

前不久又将很久之前的想法缩小了开发范围,最终产出了 http://iosblog.cc 这个网站。

iOS博客精选 ,目标是收集各种iOS开发大小牛的博客,附带收集少量经典文章及系列教程。

网站使用Python的Django框架,数据库为MySQL。源码见 https://github.com/everettjf/TomatoRead/

组成部分:

  1. Web:也就是看到的 http://iosblog.cc
  2. Chrome 扩展:辅助维护人员添加网站的 Chrome扩展插件。
  3. iOS客户端(即将开发):提供博客订阅及网址手机端的查看。

作为一名iOS程序猿,这也算是全栈了。依靠大学时期ASP制作网站的底子,学起Django来还算轻松。这3个组成部分,已经完成的前两部分都不是我擅长的,未开发的第三部分是我工作中擅长的。

马上开始第三部分开发,目标是作为我学习iOS开发以来的第一个上架AppStore的作品。

历史

看似简单的 http://iosblog.cc ,有个很冗长的历史,这个历史充分体现了我对开发个人作品的经验不足,或者说充分体现了一个看似简单的想法变为现实的艰难过程(这里艰难或许主要原因在于我的想法的实现在我的熟悉的技能栈之外)。

见这里 https://github.com/everettjf/TomatoRead/releases

反思

一个看似简单的想法,却前后开发了这么久,却最终还没有实现,只是看似走在了正确的道路上。

  • 是要快速实现想法,还是要尝鲜新技术
  • 快速实现想法,那就选择成熟的技术、框架
  • 尝鲜?那就折腾去吧
  • 多想,多设计,不要一上来就写代码
  • 想法要从简,想想怎么以最简单的方式实现想法的核心功能
  • 精简想法,去掉那些不关键、不核心的东西
  • 想法的实现技术最好是自己擅长的
  • 确定要投入大量的业余时间吗,确定吗?

未来

钦慕

未来大量时间会投入到钦慕的开发中,逐渐将最初的想法以更合适的方式融入。(不忘初心)

iOS博客精选

专注于iOS博客,日常不断维护。 iOS客户端会首先尝试开发,试错。力争尽快上线第一个版本。