gitorious.org - the free open source hosting service (came first) gitorious.com - the commercial company behind it (came later) getgitorious.com - official doc, starting point etc (recently added as a common starting point)
HN user
thomanil
Core committer on Gitorious (gitorious.org), working at Gitorious AS (gitorious.com). Personal website: http://kjeldahlnilsson.net
Thanks for that. BTW our new official home page can be found at http://getgitorious.com :)
It used to be, but now you can simply use the automated installer: http://getgitorious.com/installer
mattdebord and estel: I'm one of the core Gitorious committers. What specifically did you find messy? The initial setup or GUI/UX? Honest question, as we're constantly trying to prioritize based on the painpoints of users. :)
BTW we've recently addressed the complicated manual setup with a new, automated installer that gets you set up within 30 minutes: http://getgitorious.com/installer
Also, a new and improved UI is due to arrive in Gitorious soon: http://blog.gitorious.org/2012/08/21/sexy-looking-repositori...
All feedback is very welcome.
Exact same reasons here. I love being able to suspend, resume and clone VM dev environments, and there's plenty of OS X software I really don't want to give up outside of dev work (Keynote, Sparrow, Reeder, Final cut, Pixelmator, etc..)
Agree on Vagrant, great for headless deployment/testing workflows.
I was on a 11" Air until last week, transitioned to a 13" Macbook Pro this weekend. Performance was a bit sluggish when running a full Ubuntu desktop inside a VM on the Air, but feels snappy and great on the MBP.
My setup is just a basic Ubuntu desktop install inside VirtualBox (with Vbox guest additions installed). Haven't noticed any particular problems with the gfx support, but then my Ubuntu desktop is fairly basic - I only need an Emacs frame, Chrome and few terminals panes to do most of my day to day work.
I also use Vagrant to create, suspend, resume and destroy VMs when I just need something headless to deploy and test our product to.
I can relate to the OP: I like OSX for general work, but prefer Linux for programming workflow and tooling (mainly because of the debian package system). My solution from now on is to do my dev work inside a Linux VM (through Virtualbox). Seems to work well. Would love to see others experiences with similar setups, anyone else going a similar route?
I use the "ultimate" model (blank keys) just fine with my Mac Mini and MacBook Air, no issues.
I'm using the Das Keyboard Ultimate at home. Have played a few pc games (both FPS and RTS games) without any issues.
http://railsplayground.com specializes in RoR hosting - they offer both shared hosting, vps and dedicated servers. Extremely rapid and competent service.
I've used them for both my startup and some smaller personal projects over the last 10 months, very satisfied so far.
Found my Better Half. Fathered my daughter. Built v.1 of http://thoughtmuse.com singlehandedly on nights and weekends, in under five months (as estimated).
I record quick thoughts with pen and paper on a small pad I carry with me everywhere.
For more intensive work I use mindmapping. Either on whiteboard, or using http://thoughtmuse.com (disclaimer: I'm the founder of ThoughtMuse)
Javascript: Start with Douglas Crockfords "Javascript: The Good Parts". Excellent, terse primer on safe Javascript development.
Startups: Read content by people like Peter Graham, Joel Spolsky, Rob Walling, Guy Kawasaki, Bob Walsh, Andy Brice - just to mention a few of my personal faves. Skim around, there's lots of great free content out there on software startups!
Good point, will definately look at adding some more hints/teasers of other stuff that can be done.
I'm also planning on producing some good content (articles and screencasts) on what you can do with mindmapping both in general, and with ThoughtMuse specifically.
Cheer up - Paul Grahams worldview isn't the only one out there.
Do some reading on 'mISV' companies. Google Bob Walsh, Erik Sink, Rob Walling, Andy Brice and Patrick McKenzie - all of whom have written excellent material about building viable, bootstrapped, part-time software businesses.
Also, see this excellent talk by DHH on alternatives to the classical 'balls out, big risk/reward' startup scenario:
http://www.omnisio.com/startupschool08/david-heinemeier-hans...
Good luck!
(I'm in the same boat; currently only a few weeks from launching my first product.)
I concur. I also use Spring at my dayjob, without the problems the OP describes.
Spring is really useful for setting up the underlying infrastructure/plumbing/cross cutting concerns of a system - however, you don't have to use it for all your domain logic too. Don't drink the dependency injection cool-aid. :)
I like to use mindmaps for planning and concept work like this.
Freemind is a good open source mindmap editor for the desktop.
Or you could try my online, browser-based mindmap app. http://thoughtmuse.com ;)
Maybe this has been asked before, but what the hey:
Is anyone here on HN using Clojure for commercial production code - websites or otherwise?
Good list.
Not sure about the comprehensive spec at page 9 though: BDUF - Big Design Up Front is often a naive approach. Requirements and constraints tend to change as you go along. Too much up front specification can be a waste if 30 percent of those features never see any use. I'm all for thinking each specific task, function and web page properly right through before coding it, though. :)
I also have trouble with "design for reusability" at page 39. Building one-off components is a waste IF you are going to build similar stuff in the future. However designing things for reuse also incurs overhead in itself that first time around. The specific project context should determine if building for reuse is cost-effective. Also, designing for reuse can be taken too far. We sometimes burn ourselves by thinking too generally - see some of the more complex J2EE frameworks out there...
Physical whiteboard in the same room.
Big screen.
A command line (Terminal on mac, cmd.exe on windows).
A launcher app (Quicksilver on mac, Colibri on windows)
An editor (TextMate in mac os, NetBeans in windows).
A mindmap editor for planning, design and notes. (Freemind, cross platform)
(I purposefully stay cross-browser, cross-OS, going back and forth between my MacBook and my Wintel desktop pc. This forces me to keep using and testing both my product and dev environment in several different OS'es and browsers - plus it provides redundancy; if one env blows up in some way, I can just fall back on the other.)
Sappy but uplifting video. I'm going to bookmark it and replay it when motivation for my mISV starts flagging. :)
Oh and if you plan on doing anything web-related, learn Javascript (properly!) - this will also expose you to functional programming technique.
Check out the book 'The Little Schemer'. Good way to ease your mind into functional programming.
Also consider learning a dynamic 'scripting' language like Ruby or Python. They have some functional aspects, and will teach you programming style and idioms that you probably haven't picked up from Java and C.
You forgot to mention one early step:
Research market/niche viability. Are there enough likely customers out there for what you want to build and sell?
It's a good idea to do this up-front before sinking hundreds of hours into a project, only to find that A: Few want it or (more infuriatingly) B: Many want it, but in a different form.
What he said, apart from a few differences that I've found works for me (YMMV):
1. Do ENOUGH design and requirement gathering up front. Talk to stakeholders and users. Play around with any unfamiliar technology that you're required to use. In short, get your bearings before you start estimating.
2. Extract tasks that must be done. Each task should take less than a day or two to complete - larger tasks than this are often "lumps" of work which are harder to estimate accurately. Divide as needed. Don't forget testing, bugfixing, "polish" and all that jazz!
3. Estimate each task in IDEAL hours. Ie. "how many hours would this take if I could focus 100%, no interruptions, closed office?" Another approach is to estimate entirely using relative units - go google the "Poker Planning Game".
4. Add up total ideal hours. Then multiply by a risk factor. (My absolute minimum is 20% - that's if I have a complete lock on both the technology, the requirements and ALL other significant project factors.)
5. Figure out how many IDEAL hours you actually get done each week. How much effective time do you have left when you subtract meetings, interruptions, lunch, motivation lapses, etc etc? Divide the hour number from step 4 by these actual hours accomplished each week.
6. Now you know roughly how many weeks the project will take. Then take into consideration miscelleaneous external constraints. Will Joe Developer be there week one or is he tied up? Will Sue Tester go for a three week holiday to Hawaii at some point? Tweak the schedule further based on such known specific "X factors".
7. By this point you have a rough idea of when you will be done... in an ideal world. :)
Note: This is what I do for small projects or single iterations/increments in larger projects, ie 1-3 months for a few developers. Larger processes / project scopes = different techniques. Go google Agile/Scrum/other modern development methodologies. :)
I have these guys's blogs posted under "Software Development A-list" in my RSS reader:
Steve Yegge, Joel Spolsky,Jeff Atwood (Coding Horror), Martin Fowler, Ted Neward, Andy Hunt, Steve McConnell (10x Software Development), Michael Feathers,Paul Graham