Looking forward to change

Tag: Rails

rails初学者请教如何更快的掌握rails开发的能力

by Daniel Lv on Sep.08, 2009, under Geek

比较奇怪,Rails小兵级别的人物如我,居然经常在Blog上被人问起Rails初学者如何上手这样的问题。今天在Shanghaionrails的Group上,Barry也问了同样的问题,于是我仔细回复了Barry,我回复同时也是为了给所有初学Rails的人一点点建议。

——————– 分割线,Barry的问题 ——————–
各位好,

在 Daniel 的介绍下,第一次在shanghai rails group上发帖子,虽然我已经认识其中的一些成员。有感于组员的热心讨论和rails相关的问题,想请教各位如何才能尽快的掌握rails。

目的: 希望能够学习一些rails的知识,开发一些自己感兴趣的网站。

背景: 几乎没有任何计算机的背景知识。大学的时候没有怎么学过计算机编程课。目前从事的是和知识产权相关的律师工作,包括open source, web2.0什么的。

我对rails感兴趣,是看到一个介绍美国的peertopatent.org网站是用rails的技术来做的。这是一个我很关注的和专利有关的网站。因而读了一些文件,说是rails是一个非常方便,快捷的网站开发工具。于是就顿时产生了兴趣。

最近已经看过一些html和asp的书籍。也读了headfirst 系列的深入浅出 rails一书。知道一些rails的基础知识。但是在继续看更多的书的时候,却发现rails,还有ruby,语法真的是非常的灵活,以致于常常摸不着头脑。特别是那些个object的属性,书中的介绍几乎是信手拈来的使用。还有引号,顿号和逗号的使用,看起来非常吃力。

近期目标:之前请人做了用asp做了一个英语的法律问答的网站, www.15minutes4u.com。在shanghai rails group上看到了之前的一个外包消息,于是在接洽请他们用rails改版和升级。

请各位多提宝贵意见,有没有什么外行人的捷径。目的是自己开发一些感兴趣的网站。。。

多谢!

Barry

——————– 分割线,我的回复 ——————–
我来尝试回答一下,关于楼主这一系列问题,我最想说的第一句话就是,“相信我,面对这些问题,你并不孤独…”

先泼冷水吧,我希望楼主先弄明白两个问题,为什么是Rails?以及为什么要自己搞Rails?

关于为什么是Rails,我认为酷学的小星一次在宾馆跟我聊天的时候,总结的最为精辟:”如果你有个好的想法,想要互联网创业,想要快速实现一个原型并马上推到市场上,接受市场检验,这时Rails是最佳选择“

关于为什么要自己搞Rails,需想明白投入产出的关系。因为这意味着长期坚持投入大量时间和资源。我从创业角度理解,一个专精市场或者业务的人和一个技术型的人互为创业合作伙伴的组合,是一个不错的选择,可以互相取长补短。

好,现在说说入门成为一个Rails程序员吧。

我想以自己作例子来说一下,我大概是06年底07年初接触Rails,是看着JavaEye的Robbin的文章受其蛊惑,开始学习的。Robbin写了很多RoR系列文章,适合按照时间顺一篇一篇阅读。

地址 http://robbin.javaeye.com/category/5473 这些文章我深以为然。

关于RoR学习书籍推荐 http://robbin.javaeye.com/blog/58287

不过我有一点不同意见,我认为两本书《Agile Web Development with Rails第二版》和《Programming Ruby》就足够了。

不用担心那些Ruby语法上的细枝末节,其实那些并不重要,RoR最大的好处是,你可以先从Rails框架开始学起,然后顺便学习Ruby基础知识。注意,你的目标是熟悉并理解Rails这个框架,这个才是重点,等过一个阶段,对Ruby基础知识的需求才会凸显出来。

说完了书的选择,我想说说学习过程,我认为想要掌握Rails,制定一个好的,合理的初级目标非常关键,《Agile》那本书中的“书城”的例子,就非常适合作一个初级目标,我可以负责任的告诉你,当你把这本书上的例子烂熟于胸,并对这个实例项目的需求实现的前因后果深刻理解后,你已经掌握了至少80%的Rails知识,足以应付工作中80%的问题,这个过程,如果对自己要求高一点,施加的压力大一点,大概需要三到六个月吧。不用感觉这个时间太长,其实少既是多,慢既是快,如果能用半年时间,将这两本书上的内容学通学透,后面的学习过程将会是突飞猛进,摧枯拉朽的。

说说捷径,我可以负责任的告诉你,如果你真的打算走技术道路,打算自己折腾Rails作web项目,走捷径是不靠谱的,你可以直接放弃走捷径的可能吧。

如果非要头撞南墙找捷径的话,我偷偷告诉你,你不是有项目正在用Rails升级么,将这个项目中一些小模块揽下来,多跟Rails团队沟通,偷师也成,利用项目压力来推进自己的学习进程,是可能压缩总体学习时间的,但是过程会很痛苦,呵呵,我就是这么走过来的。

好了,我就说这么多,其他的楼下补充!

Daniel Lv

——————– 分割线,未结束,新回复会更新在这里 ——————–
Barry,

First all, www.15minutes4u.com is a decent site, nice clean UI. And I
love the fact that you didn’t put any ads. on. It has a great
potential. I can see myself and some of my friends using the site.
Don’t give that up.

about rails, Daniel is right, it is best for rapid prototyping. And
before we can give you any useful suggestions, you need to tell us
what you goals are, what you are trying to achieve with Rails.

in general
http://www.rubycentral.com/book/ is a good free online book to get
started.
http://pragprog.com/titles/rails2/agile-web-development-with-rails is
probably one of the best books for learning rails.

Two should be enough, if you start practice and have any questions,
stackoverflow is a nice place to ask. you can also post questions to
here.

hope that helps.

Eric
—————————————-
如果只谈rails中ruby的语法问题的话,那么可以看看这本书
《Ruby for Rails 中文版》
这本书有380页左右,
对于一个有些编程经验且理解面向对象的人来讲,这本书不错。
能够快速掌握ruby的语法。
相关网址如下:

http://www.douban.com/subject/2123090/

http://www.china-pub.com/209179

还有一本书,《Programming Ruby 第二版 中文版》。
但这本书有800页左右,不适合快速掌握ruby语法。
里面介绍的东西有些和rails没有直接关系。
相关网址如下

http://www.china-pub.com/30059&ref=ps

http://www.douban.com/subject/1422056/

如果想学rails,这两本书都要买。
《Ruby for Rails 中文版》用来快速掌握ruby语法。
学习起来更容易,完全是针对rails而学ruby。
跳过很多不直接相关的技术问题。适合rails的新手。

《Programming Ruby 第二版 中文版》用来做ruby的参考手册,有什么不明白的可以去查查。
不过,如果想真正掌握ruby这门语言,而不仅仅是rails方面,那么还是要多这本书。

这两本书我都有,我也都读过,所以不是空谈。
如果你在上海,我也可以把书…….借给你看看,呵呵呵呵。

希望能真的帮到你。
Ery
—————————————-
我要说的,怕是有点不搭调。
首先很钦佩楼主的学习热情。不过从目标导向来看,我觉得楼主可以走合作这条路。利用你的律师工作经验,将你的idea让rails使用者帮你实现。至于个人要不要通过学习rails进而开发感兴趣的网站,我倒认为其次。
打个比方,一个好的idea,通过合作可以2周实现,如果自己干,从头开始,1个月实现,可能还问题多多,你觉得哪种更划算呢?
当然认同你的idea并且有rails技能的未必那么好找,但是志同道合者未必很少。
术业有专攻。这话应该有它的道理。

– Qi Xiang
—————————————-
没有什么捷径,只是哪种方式更适合你。如果想尽快看到效果,照着书上的例子就可以了,不过以后你会发现基础还是比较重要的东西;如果想真正去了解它,建议从基础学起,在学习过程中尽可以用自己学会的东西去实践,这样会有更大的帮助。

– 马玉潮
—————————————-
呵呵,太喜欢这个讨论主题了。

我的理解这是一个”学习的困境“。
首先,楼主一定会很勤奋,说不定比很多人都更加勤奋。不惜投入时间精力。
其次,楼主花费更多的时间精力寻找”捷径“,因为勤奋的楼主认为时间总是不够,希望加速学习过程。

大家其实总结的已经很棒很全面了,放弃寻找捷径吧,学就对了。一段时间,就会非常清楚目标方向了,但是不尝试,很难明白到底什么方法更合适自己,祝楼主好运。

Best,
Daniel Lv
—————————————-
看标题还以为是Barry想亲自动手作一个rails网站呢。
如果想监督rails工程的质量,那么要看他们用的插件多不多(vendor/plugins目录下)。如果插件用的多,但是对于代码却不清楚,那么说
明他们只是rails的初级用户。
如果对于使用工具的源代码不了解,很有可能会出现意想不到的问题,就是《实用主义程序员》告诫的“不要靠巧合编程”。我刚用rails作项目的时候,也
曾经安装了插件结果造成系统出错。
如果想编程入门的话,其实Ruby语言缺乏这样有趣,引人入胜的入门书。以前我对编程十分惧怕,C代码超过200行就看
不懂了,看了之后,方有“原来编程是如此简单,如此快乐的事情啊”这种感叹。

– Jiang Wu
—————————————-

3 Comments : more...

RubyConfChina后记+Facebook应用开发者大会后记

by Daniel Lv on Jun.28, 2009, under Life

最近工作生活的变动都很大,加之自己已经是重度Twitter用户,Blog差不多要荒废掉了,今天下午参加了Facebook应用开发者大会,见到老朋友杨进东,杨就跟我说,你的Blog貌似好久不更新了呀…

最近参加了两届技术大会,除了今天Facebook这一次,还有就是上个月21日举办的RubyConfChina,会后总想要写点什么,结果拖拖拉拉一个多月,试试看吧,看还能想起点什么。

上个月的RubyConfChina相当之成功,但是可能很多人不知道,举办一次这样规模的会议相当不容易。就从筹备说起吧。办理这样规模的大会首先需要的就是钱,没有钱什么都做不到,元一和Stephen,还有Koz他们才是最最辛苦的幕后功臣,通过各种朋友,关系,跑来了绝大部分的赞助,因为拉赞助是很消耗时间精力的,所以他们很早就开始运作这件事情,没有参与的我在这里就没有办法具体细表了,但是想象一下,在经济危机之下,仍然能谈到这么多的赞助商,募集到一次会议的所有费用,真的很不容易。赞助商们我就不一一点名了,网站上有,当天会议开始的时候我也一一表过 :-)

我大概是在会议提前一周才介入筹备工作的,因为那个时候自己的本职工作太忙,所以大部分事情都是其他人作的。分配给我的任务是作会议的主持人,并负责提前跟所有演讲嘉宾沟通演讲事宜。于是之后的事情就是我不停一轮又一轮的沟通以及跟JavaEye的Robbin探讨会议整个流程,最棒的是每一位嘉宾都特别配合,因为在我的经验中,一天组织8个演讲,时间是相当紧张的,必须严格控制时间以保证会议流转正常,所以我反复跟每个嘉宾强调时间问题,以及提前约定了一套如何在会场暗示演讲嘉宾时间的暗号 :-) 事后证明,这些暗号基本完全没有用,因为每位嘉宾都表现的太棒了,没有一个嘉宾的演讲超时,且我们还做到了在下午增加了一个特别的10分钟的微型演讲。

会议前一天晚上,我,元一和Stephen三人作为shanghaionrails的组织者迎接本次会议的重要贵宾,Ruby的创始人,Matz先生。晚上在浦东陆家嘴招待Matz吃饭。这里不得不提一个人,来自日本的Koz先生,Koz是加入我们的Rails组织不久,但确是最最活跃的会员,而且本次是Koz先生大力帮助才促成了Matz先生的中国之行。

phpcceiVG

席间Koz为我们合影,左二即是Matz先生。

phprlrnF5

在酒店的阳台上,当晚下着小雨,对面浦西的风景在雨中很漂亮,仍然是Koz帮助我和Matz先生合影,越发佩服Koz的摄影水平,不但将Matz拍的这么可爱,还将我的发型拍得如此飘逸 :-)

phpp3mOGR

合影,右一就是Koz先生,看Koz先生的脸色,就知道Koz喜欢啤酒 :-) (左二是另外一位来自日本的朋友)

席间我表达了对Matz先生的敬仰之情,表达了我非常感谢他发明的Ruby语言,给我带来了这么多的快乐,而Matz先生非常和蔼,但回答让我惊讶,Matz先生说:you should create your own language,当我问到,第二天当我向大家介绍您的时候,您希望我如何来介绍?Matz回复说:Whatever。哈哈,其实第二天当Matz先生结束了他的演讲之后,我找到了所有问题的答案。

当天因为迎接Matz先生一行人,我错过了另外一场非常有趣的聚会,Jason把来自北京的Robin Lu,还有Dreamhead,QuakeWang召集到一起,而此时来自杭州的Ash一行人也到了上海,于是我撮合了Ash跟Robbin Lu碰头,据说那天晚上他们那边也是相当热闹,鱼与熊掌啊~~~不过晚上我是跟杭州来的朋友们在光大会展中心附近的汉庭酒店碰头,晚上跟来自酷学软件的小星同住一间房,睡前我们俩聊了很久,聊了些非常深刻的话题。

其实当天晚上Robbin Fan那边也没有闲着,他正忙着布置会场,记得当天晚上跟Robbin电话确认会议开场暖场环节时,Robbin跟我说会场布置并不顺利,貌似出现一些小矛盾,不过都被Robbin大侠一一搞定了,赞!会议头天晚上我很兴奋,加上那段时间工作压力很大,有点失眠的问题,于是整夜脑子中都在不停的想第二天开场如何暖场以及会议流转的细节,后来的事实证明,如果第二天有大阵仗,那么头天的睡眠质量非常重要。

会议当天我去的很早,在会场门口一角,我看到一些来得比我还早朋友们,简单聊了一下,我发现他们居然是一大早从安徽合肥赶来的,惊讶之间又来了几个朋友,问之更令人意想不到,是从重庆飞过来的朋友,之后我们发现还有来自北京,广州,厦门,温州等等,更不要说来自南京,无锡,杭州,苏州的了。几乎一小半人都是来自外地,真让人感动。

会议开场出现一点小小的意外,因为Matz先生的翻译不能及时赶到,我们作了适当的调整,将来自Ekohe的黄智敏排到第一个讲,而黄智敏没有任何抱怨,欣然接受了这个安排,感谢黄。我要说说我的主持环节,其实我的时间就是开场前的半小时以及为每位演讲嘉宾作一个简短的介绍,not big deal。但是之前的暖场我作的相当失败,互动效果很差,完全找不到感觉。欣慰的是,整场主持虽然带给大家带来一些无伤大雅的笑场之外,并没有留下啥恶名。算是无功无过吧。事后我跟演讲俱乐部的Maggie聊到这次主持经验,Maggie告诉我其中关键所在,其实如果人不算多的话(比如每三个月一次的shanghaionrails线下活动)就很容易把握听众的反应,并很容易的产生互动,而人数众多的话(比如这次会议接近500人参加)就不太适合互动环节,而是应该更多的表现幽默一些,通过一些非常幽默的表现方式来调动大家的气氛才对(比如周立波)。的确如此,以后一定要注意。

phpidGAEJ

这是当天会议现场的主持人,就是我 :-)

说说Robin Lu的演讲,其实之前我跟Robin关于演讲内容有过交流,之前我本人非常怀疑Robin的演讲内容是否能达到一个比较好的效果,因为从ppt来看,都是关注于一些代码细节,而我的经验告诉我,在公众演讲中,非常细节化的代码演示往往得不到很好的效果,于是在现场,我就不停的跟Robin说道这个事,站到Robin的角度,其实我是从Robin的内容ppt,演讲技巧,选题等等个个方面对他进行了无情的批驳,但是事实证明,Robin是非常棒的演讲高手,毫无悬念的赢得了当天的最佳演讲这一称号,ppt上的代码被他用非常机智幽默的方式诠释的淋漓尽致,听完他的演讲,我突然发觉我土鳖了,有点无地自容阿 :-(

整场会议每个演讲环节都非常顺利,到现场参加会议的朋友们应该看到了,没有到现场参加会议的朋友们通过各种报道了解到了这场技术盛宴。还有很多非常有趣的细节值得记录,不写了,就留在回忆中吧。对了,有个事情我需要表一下,当Matz一行人离去的时候,我跟着他们出去,并对Matz的翻译说:”你是我见过的最漂亮的翻译“,翻译MM当时估计一下子反应不过来,愣在那里了,旁边的Matz有点纳闷,不知道我在说啥,于是我解释给他说:”she is the most beautiful translator I never seem before!”。当Matz听完我的解释后,我从他的脸上读到一个字“囧”,此后,最漂亮翻译这个事情开始在网上流传开来 :-) 那天晚上,有个会后晚宴,参加的都是当天的嘉宾和行业大牛,因为头天没有睡过,一整天我有有点紧张,大概是累了,席间我居然就在众牛人们兴高采烈的讨论中,趴在桌子上睡着了,真是没有给牛人们面子阿,我囧。后来我在公司的团队blog上也post了一篇,prompt一下这次会议。

顺便回顾一下今天的Facebook应用开发者大会,因为中午跟几个同学聚会,当赶到会场时,会议进行到一半了。据说我错过了一场非常精彩的演讲,可惜了,之后的几个演讲我感觉有点无聊,除了一个介绍网页内3D游戏演示的那个。整场会议大多是来自PHP社区的人参加,当然,我也碰到了不少老朋友,于是这次Facebook大会于我而言,变成了一次老朋友们叙旧的机会,也满开心的 :-)

Leave a Comment :, , more...

25日,杭州,Rails聚会后记

by Daniel Lv on Apr.28, 2009, under Life

真应了那句老话,上有天堂,下有苏杭。杭州有风景,有小吃,还有美女。。。

缘起:三月份shanghaionrails聚会时,杭州的Devon就问过我我,什么时候也到杭州搞一次聚会阿?答复四月份一定到杭州拜访,当Devon在GTalk问及具体啥时候来时,就开始了这次在group上发起活动以及最终成行。

Group上的讨论非常踊跃,大家献计献策,并订下了最终活动的宗旨: 游山玩水,吃喝玩乐。

25日早上8点半,在上海火车南站和来自Honeywell的Linus碰头(Linus不光大名如雷贯耳,而且是测试领域的专家哦,在rails之外,大量使用ruby进行集成测试以及UI前端测试,以后有前端测试方面的问题,可以向Linus请教了:-)),乘坐9点半的D5657次列车前往杭州,期间接到来自南京的Jason的电话,告知要从南京方向赶赴杭州,会路经上海,着实佩服Jason对本次活动的热情。一路跟Linus相谈甚欢,11点抵达杭州。

杭州火车站地下广场的出租车不好叫,我们乘坐大巴到武林广场,一路游荡到西湖边,先热热身,12点抵达柳浪闻莺对面的淘咖啡。来自酷学软件的Devon早已在那里等候多时,来自无锡天狗软件的Koz和Sophia同时抵达,于是在陶咖啡的一个包厢中,我们边品着咖啡(啤酒)边开始了本次活动的自由讨论环节,期间陆续到来的有酷学的研发团队成员小星,柱子,还有杭州的Ash(陈建明),来自theplant的孙凤君,孙凤民。大家聊天的话题从Rails技术开始,到3G领域的机遇,在到上海与杭州的Rails社区八卦,跑题到大家的共同爱好如美剧,以及个人的光辉经历等等,程序员生活等等话题,期间气氛热闹异常。直到下午三点,来自南京的Jason抵达,我们离开淘咖啡,开始了绕西湖骑行的活动。

现在正是玩杭州西湖的日子,天气非常好,一点也不热,西湖边上出租自行车价格便宜量又足,于是大部队人手一车开始shanghaionrailsonhangzhou的游行活动,啥也不说了,上图:

hangzhouonrails_01

左边的帅哥是来自Honeywell的linus,前面介绍过。右边的壮汉是酷学的柱子,今年刚刚毕业,不过已经玩Rails两年多了(玩Rails的经验比我长),linux的资深用户。(补:柱子是我的老乡,也是青岛人:-))

hangzhouonrails_02

来自杭州萧山的Ash,带头大哥级别,资深程序员(高手中的高手,大拿中的大拿),现在是一个Freelance的软件咨询师,是做到真正财务自由,有房有车有老婆孩子,开心编程快乐生活的程序员典范,值得每一个人向他学习,从始至终,都能从Ash脸上看到一种成熟,成功的表情,向Ash致敬。

hangzhouonrails_03

来自酷学软件的小星,热情,活泼,人见人爱的帅哥,美女们小心处之。。。

hangzhouonrails_04

左边就是酷学的Devon,此次杭州活动的杭州地区负责人。右边是来自日本的Koz,现在在无锡成立了一家“天狗软件”公司,是shanghaionrails的老朋友了,希望他的公司在中国取得成功!

hangzhouonrails_05

左边是来自无锡天狗的Sophia小姐,右边是来自南京的Jason。有人说Sophia小姐像天使,我同意,但是他们在讨论什么,我们不得而知。。。

hangzhouonrails_06

这是我们自行车的阵势,很强大!

hangzhouonrails_07

theplant的孙凤民,此君精通技术和日语,是作Merb的哦。他的公司也正在高速发展,求贤若渴哦。

hangzhouonrails_08

此人是我,我十分怀疑我不太上相,囧….

hangzhouonrails_11

全家福1,人物从左至右依次是:Jason,孙凤民,我,Linus,Sophia,Koz,柱子,小星,Devon,Ash。由孙凤君拍摄。背景是西湖旁边的太子湾,非常的漂亮,很多人在那里拍摄婚纱照哦。

hangzhouonrails_10

全家福2,孙风君站在我的左边,感谢孙凤君全程拍照,期间向他请教了不少关于数码单反相机的问题:-)

hangzhouonrails_12

杭州小吃,要数知味观,座落在西湖边,去得时候可谓人山人海,生意真好。我们在二楼露天阳台找到一个角落,三张桌子拼起来,开始大快朵颐各种杭州小吃,喝啤酒,海阔天空。只留下杯盘狼藉,哈哈。

晚餐后,大家仍然回到西湖,在夜幕中漫步在西湖畔,观音乐喷泉,赏西湖夜景,并逐一送别各位朋友,当天聚会在这里告以段落。

-EOF-

后记,晚上跟Linus,Jason同宿,第二天玩兴不减,继续租车骑行玩了杨公堤,爬了雷锋塔。中午重游旧地去了4年前在杭州工作时,印象深刻的一家特色饭馆,在宝諔路体育馆路路口西北角的一家“卜家野鱼馆”,小店仍然建在,生意貌似更加兴隆了,菜色美味价格实惠,点了最爱的“妈妈红烧肉”,推荐给朋友们并得到了一致的赞许,照例要问服务员这道菜是怎么作的阿?照例仍然问不出答案,下午打到回上海,一次完美的杭州之行结束。

此文同时发布在shanghaionrails官方网站上。

4 Comments :, , , more...

has_many :through, Yes. belongs_to :through, No.

by Daniel Lv on Apr.15, 2009, under Geek

自从Rails出世以来,就提供了has_one,has_many,has_and_belongs_to_many,以及belongs_to这几种典型的模型关联关系。先说has_and_belongs_to_many:

has_and_belongs_to_many是一个好东西,仅用一张中间链表就模拟出了拟双向多对多的关系。而rails并没有就此止步,从rails1.1开始,添加了一个新的关联关系,即has_many :through。他仍然是habtm关系,但是更加优雅,让在后台默默无闻的中间链表从此有了自己的模型,主键,并可以扩充模型方法,用来实现更加优雅的的查询等…我自己一直把他认为是一种高级的habtm,并且尽量使用这种高级habtm,以保持灵活性,方便将来的扩充。

有下面一种场景:

class Shop < ActiveRecord
  belongs_to :city
  belongs_to :country, :through => :city
end

可以实现Shop#country么?答案是不可以。has_many和has_one都有:through了,belongs_to偏偏就没有,为了实现同等效果,我通常写这样的方法:

def country
  city.country
end

有点丑,不是么?这里解释了为什么RailsCore团队迟迟没有添加对belongs_to :through的支持,Rick Olson(来自RailsCore团队)这么说:

 
Because belongs_to is for a foreign key thats in the current table.
If you’re going :through a model, it’s not the same and has_one should
be used.
 

这已经是大概两年半以前的事情了,其实要优雅的处理这种情况很容易,使用ActiveSupport提供的delegate。但是在Rails2.3.2之前。我并不敢大胆这么用,因为如果你的delegate的目标对象不存在的话,调用delegate方法会出”NoMethodError”异常。所以,我被迫这样写:

def country
  city ? city.country : nil
end

好消息是从Rails2.3.2开始为delegate添加了一个新的参数:allow_nil,使得当委托对象不存在时直接返回nil,以后就可以大胆的用了:

delegate :country, :to => :city, :allow_nil => true
1 Comment :, , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!