* We pay fair salaries. For most people in our team it's way more than what they've earned before.
* We pay everyone the same (base) salary. Regardless of their role or title.
* We pay quarterly bonuses based on pro-activity, responsibility and other performance indicators.
* Everyone can work from wherever they like, still many people choose to work from our main office in Barcelona. (For example I work many weeks out of my camper van with 3G/4G connection from beautiful surf locations)
* In theory, everyone can choose how much or how little they want. Not always possible, but we try to make it possible as much as we can.
* We have managers, but they don't demand things. They are responsible that certain things happen, but decisions are being made collaboratively.
* All managers are either engineers or designers. No bullshit managers.
* We don't have a dedicated sales person. All work we get is from word-of-mouth and the first person a new client speaks to is either an engineer or designer (or both).
* We play Mario Kart / StarCraft after lunch ;-)
* We do a lot of sports activities together
* We have a lot of BBQs on our terrace
* We use some of the profits for fun internal experiments (small projects without an expected outcome other than having fun & learning). However, some of them are now actually turning into actual products: http://bugfender.com/
* MJ University: we take online classes together as a group
* MJ Talk: weekly presentation about an interesting topic (not necessarily tech related). For example we had talks about personal finance (investing), achieving happiness, etc.
* We encourage pair programming where it makes sense
* MJ Weekend: once or twice every year we fly everyone to Spain, rent a nice villa with pool and have a good time together. Some pics: http://blog.mobilejazz.cat/work-life-balance-at-mobile-jazz/
* MJ Retreats: we're going to remote places and work there together. At the moment six of us are on an island in Thailand. In February we go skiing in Austria.
* We put a lot of effort in hearing everyone's opinion and feedback and try to put it into action
With all that we've managed to attract and retain incredible talent, but most importantly we have a very pleasant time together.
That said, we're a company optimizing on lifestyle and happiness, rather than profit. So this way of running a business is probably not applicable everywhere.
(Edit: formatting, typos and a few additions)
In a nutshell: people who work for Igalia own it (with equal amount of shares, usually after three years in the company) and participate in the assembly (usually after 6 months-a year in the company).From that premise, our decisions and ways of working are generally very flexible towards employees. Having the same salary (with more for people who live in more expensive countries) or being able to work from wherever you want is just the tip of the iceberg.
Happy to answer questions.
I'm a mod of it...we're pretty flat at Balsamiq, too.
We're a slightly larger team (almost 50 peeps) at Axiom Zen (https://axiomzen.co). Our entire raison d'etre is predicated on coming up with interesting, high-risk ideas and carrying them through the various stages of market validation, prototyping, iteration, and growth. Because of this, we are working really hard to become and remain the best place for brilliant people to build awesome things.
We try to clearly define our values (just like Valve/GitHub), build them into our products, and use them as a heavy filter for hiring. We also go out of our way to ensure total transparency in the team, using GitHub for everything from sales to hiring so that everyone can see the stage everything is at, decisions leading up to a particular status quo, etc. Also everyone has an equal voice in jumping in to suggest / push forward changes.
For a bit on our workflow, take a look at this blog post: https://www.zenhub.io/blog/beyond-code-use-github-zenhub-for...
We'll eventually polish up and publish our company handbook which dives into the `how` and `why` much more thoroughly than I ever could here.
They're also great supporters of the London Python scene (also another good indicator of a good company to work with).
(Note: I used to do sub-contract work with them. The first thing that happens when you work with them is you get sent a copy of one of Semler's books on the subject.)
A few other companies doing it...
* Zappos http://qz.com/161210/zappos-is-going-holacratic-no-job-title...
* Treehouse http://ryancarson.com/post/61562761297/no-managers-why-we-re...
* WL Gore & Associates (parts of the company) http://www.theguardian.com/business/2008/nov/02/gore-tex-tex...
Here's my previous comments on it https://news.ycombinator.com/item?id=8270601
Atlassian seem to be doing things differently.
Umantis in Switzerland democratically elect their CEO: http://www.umantis.com/en/press/haufe-umantis-ag-employees-e...
I'm very interested in this question as well, especially companies in Amsterdam, Berlin, Hamburg and Copenhagen. Anyone else know of companies doing things differently?
As far as i know the only 'new' management trend that has catched on here.
Their Zoho University concept is also an interesting attempt to solve India's problem of creating quality engineers (vs quantity).
There are lots of small firms (ie, ~5 people) who use this approach. Arguably, for a team of 2-5 people, it's the most natural strategy anyway.
The challenge, of course, comes with scaling this to a team of 50 or 500 people. At that scale, there are far fewer examples (though the comments in this thread point out some exceptions).
Assuming you ask because you're looking to find a place to work, in addition to the other names mentioned here, you may want to look at very small companies as well, because the odds are very much in your favor of finding one. Just be aware that the team dynamics may change as the company grows, which you may find you like, or which may mean it's time for you to look for your next step.
They are 30+. General advice there is to stay away from competing with the 20+ crowd. Compete where age is on your side, which means go into business where you have 10 years experience over the young ones. If you were a carpenter and want to be a programmer, build solutions for the construction industry. If you were a car mechanic, build solutions for the car salesman. You get the idea.
For starters, your friends can choose between getting an education , or trying their luck at "skill". If they want to work for big corporations, education is mandatory. If they want to work for small companies, education isn't going to be as important, but reputation is key. Be sure to never leave a job unfinished, and always ensure your customer is happy. Your happy customers are your salespeople.
If one of your friends are already fluent in HTML/CSS, it's natural to go into the custom wordpress theme coding, etc. This is not really an IT job anymore, but a part of the advertising industry. Pays poorly, and will continue downwards.
Your DSP friend is in better luck. This is a hard, difficult-to-learn skill. Especially if he also understands the advanced math behind it. Good DSP jobs are found in larger industries, so if he doesn't have a math degree, that would be advised. Having a Master's degree and being good at DSP programming will secure a very good future with few competitors.
As for "programming", that's not really one job but a wide field of jobs. Marketing style jobs are plenty and small, and available for both web and mobile. They pay poorly though. Corporate 10000+ hour projects or salaried positions are out there, but almost always require a M Sc.There are always going to be plenty of 100 hour projects at smaller companies, but it's poor job security.
"Programming" in general is also under very heavy fire from outsourcing to lowest bidder, so I would not advise anyone to start it as a career.
Java is in high demand, and if you know either C and/or PHP I'm sure your friends will pick it up. Although there's some competition, you don't have to worry with competing with the 20s kids as long as you are an OK programmer. I believe there's enough demand for your friends to get hired, and theres a ton of resources on java stuff. Better yet, if you can manage to get Oracle certified, I'm sure that no recruiter will put you aside.
Consulting is rather easy to join (comparing with the other IT stuff, such as startups or reputed companies, consulting, etc), provided you can cause good impression with the recruiters. Technical interviews are normally easy, and there is scarcity on the supply side. The hard part is really getting the interview.
I helped a friend of mine who didn' finish his degree and was working in a music shop to enter the consulting industry. The plan was basically a) get some skills and b) bombard alot of recruiters to try and get interviews. We rehearsed some interviews so that he could feel the stress, and I pushed him to study some github projects. He got hired within a month or so, and he's on his second gig.
If you (or anyone) want my .2c, let me know.
It'll be hard to find a "real" job for a while until you prove your mettle this way a bit, even at a small company. I speak as a small business owner; we don't really have time to hand-hold unless you've really proven your ability to learn quickly already.
Then I finished all Ruby and Rails courses on CodeSchool. Then practiced myself, using mostly Google for info. This allowed me to apply to a Rails company as a junior developer. I got hired and trained. I love it.
I'd suggest your friends to get their hands dirty with a popular open source project and getting involved in a software company doing technical support. E.g. apply at one of the many WordPress plugin/theme development companies (or any other popular open source consumer platform out there)
I suggest this in particular because such PHP projects are usually well manageable on the technical side once you get the grip.This does not involve programming at the start, but could very well be a "first step" into the IT world, and as paid by the hour could also be a side project.
Then, as time goes on, if the passion kicks in they can learn all the inside out of the things they're doing support for, and start from there towards working on development itself, or going solo and try building their own software project on the side.
As a dev for various software projects I saw some other support staff members grow their knowledge over time and in the end contribute to the project as developers themselves, also as a consequence growing their income.
IMHO, they should avoid programming books. You don't learn how to play baseball by reading a book about baseball; you learn baseball by playing baseball. The same is true for programming: they'll learn more by building something, anything than they would from a book. Books may help them later in their career after they mastered basic programming subjects. For this piece of advice, I'd add one caveat: I have met some programmers who have learned immensely from books, so, if one of your friends falls into this category, discard my anti-book advice. In any case, the focus must stay on project building.
Finally, I would add that if you, or someone else, or a number of experienced programmers could mentor them through this process, that would probably help more than any other resource.
Are they prepared to move away from Barcelona or Vienna? Cities like London and Berlin are great place to look for a job in IT.
best of luck
This might not be the popular advice, but it's coming from a self-taught developer that now has > 10 years professional experience.
If the other friend is fluent in DSP and has some exposure to C I would suggest staying on that tack... take a refresher course in C and possibly pick up a scripting language like Python on the side. Check out Art & Logic: they hire remote developers and work with many clients on DSP-related projects.
The tooling (Android Studio) is also relatively accessible, and you don't need to know 4 different languages to finish a project (only Java, as compared to web programming where you'll need a working knowledge of HTML, CSS, and JS as well).
You can also ship something to real people relatively quickly, and without a gatekeeper. Shipping an app of any kind, even a free Android app, will force issues like QA, version control, and customer support which are skills outside of just coding that developers should have.
Finally, Android development has a vibrant community that's learning together, and the landscape is rapidly changing. Your friends could jump in now, and wouldn't be starting from too far behind.
Then of course it needs to be backed up with demonstrable programming skills. Coding dojos, meetup.com events, hobby projects are all good for this, and can be discussed in the cover letter when applying for a job.
The age can be an advantage. I mean, I adore my younger colleagues, but they are politically retarded.
My suggestion, get on a technical help desk, and work your way up.
My job title went from 'QA' to 'Engineer' in 3 months doing this.
I would love to teach both of them Python/NodeJS/Java.
NO FEES! I believe in sharing knowledge for free.
@nrshrivatsan is my twitter handle.
Rest I will tell to them in person.
Programmers get their source for income from online discussion (mostly) , while some people you know find local niches, not involved into programming. Eg. a take-away bar that earns 1.000$ / day from day 1 (we do their cash-register)... I don't see many programmers do that :)
If you want a job ASAP, learn desktop support, be a network analyst/systems analyst, systems administrator, database admin, quality assurance analyst/engineer/tester, etc.
A lot of jobs out there are just "we needed someone to set up this software for us and push a button once in a while", and they pay well. One guy I worked with had a job similar to mine, and he was supposed to be some kind of engineer, but he kept coming to me asking things like 'how do I sort the lines in a file?' Speaking of which, you should look for contract jobs or government jobs, or government contracting jobs. They require the least expertise and pay the most.
Your best path is to pick something universally in demand and is largely in one technology/stack/framework to learn to create value with.
For this reason, (even thought I do specialized work) you may want to look into .NET or Java development for starters while rolling into learning other technologies.
You will grow and become a polyglot in time when you are always learning.
This way there is one core technology to learn to start creating value. With a lot of the other stacks you have to learn 5-10 different things and tie it together. I'd focus on building results and using higher level tools in the beginning while your talent depends.
And as always, ymmv
Same code runs on Linux, MacOS, and Windows. There are also multiple Android phone apps. that work with the storage file format.
Having one application storing your passwords locally, provided you use a strong master password, is not, in and of itself, a tactically weak choice. You gain security by having local files because an attacker has to get your local file first before launching an attack. Using a "service" means that anyone (sys-admins, hackers) who can access the service can gain remote access to your password storage, from which an attack can be launched.
Using a "service" also means you have to simply take it on faith that they are storing your passwords securely. This is actually a tactically weak choice with "services", you have zero way to independently verify the secure storage they promise. Using a local open source app. means you can verify for yourself exactly how your passwords are being stored.
> 7:26 AM PST We are investigating Internet provider connectivity issues in the EU-WEST-1 Region.> 7:46 AM PST Between 6:41 AM and 7:25 AM PST we experienced impaired Internet connectivity affecting some instances in the EU-WEST-1 Region. The issue has been resolved and the service is operating normally.
Should be resolved by now though. If it isn't, you probably should contact support. They're very good at responding to that.
About the only thing I need to really work on is directory/registration (at the moment I'm using .env files with the URLs to different micro-services in each micro-service, mainly as it's PoC and I'm running it all on a single box)
Each microservice was a Django app, messaging was handled by RabbitMQ. I used Celery as a nice framework around messaging and asynchronous processing.
There was a thin REST layer for mobile apps to consume. It was basically just an Nginx proxy with a small Python app sending tasks to remote Celery workers and returning very fast response while the logic is handled asynchronously (this is pretty cool for payment processing, sending emails, writing entries to ledgers etc).
Big advantage is this is quite easy to scale, as you can just create new EC2 instances with workers.
I have also implemented several microservices in Go last year.
Probably to avoid accidentally hitting the Delete key and deleting files when browsing. Apple generally avoids making destructive acts easy.
My advice is, take a job with a consulting firm to learn the ropes. Then decide whether you want to sink several years of your life getting a new consultancy off the ground. I didn't reliably match my FT salary after starting Matasano for several years.
In any case, if you're looking for things you can do to make yourself marketable as a security consultant:
* (Easiest, but least-bang-for-buck): file bugs, particularly for companies with bug bounties that will credit you. Don't look for bugs in companies that don't offer public permission to test, though.
* Go looking for a vulnerability in a framework, programming language, or major library. By the time you find one, you'll have expertise in that technology, which you can (a) add to your bio and (b) use as lead-gen for work.
* Find a pattern of vulnerabilities. If those vulnerabilities aren't novel, design some countermeasure that fixes them all. If they are novel, you can stop there. Now put together a talk and submit at security conferences. In rough order of prestige, and certainly having left several out: Black Hat USA, CanSec, CCC, Black Hat Anywhere But USA, DefCon, Recon, Toorcon, RSA, Derbycon, OWASP.
Why not narrow it down?
Which do you think is more secure, the open source Darwin operating system or the proprietary Mac OS X?
Actually, it's 78 years old (2014-1936 = 78).
In any case, the book has been revised significantly. If you buy a new copy today, then you're not getting the 1936 text. Wikipedia indicates that the most recent major update was in 1981.
> Have any other books on the topic been released that are highly popular?
That seems likely, although I doubt that any single book has had anything like the popularity of HtWFaIP (if only because HtWFaIP was published in a time when bookstore shelves were not overflowing with self-help books).
I'd be interested in an answer to this question, too.
On another note, get a copy! I read it and was surprised a book nearly 80 years old is still highly relevant. It was actually pleasing to read the way people "spoke in books" back then as to today's book.
It's incredibly hard to tell if something will work or not. So hard in fact, that you are better off assuming it won't. Because that removes the expectation it has to do well, which is what's really holding you back, not fear. You believe launching will be a success only if it yields a specific type of outcome.
If you call it an experiment, it will allow you to not take yourself seriously, or to turn the project into something else, and even to ditch it if you realize you find something else more interesting. Don't let premature commitment limit your options. Just play.
Brian Eno might have said it best:
Artists who don't censor their own work: Picasso, Miles Davis, Prince. They're all people who just put it out, and have almost no critical self-censorship. They say, "Let the market decide; let the world decide." You might not be the best person to judge it. That's a kind of humility, actually: it's a mixture of arrogance, which says, "I know I'm fucking good." But a humility, which says, "I'm not the person to decide."
Don't worry about not being good enough. Just launch it. I'm free to chat - email's in my profile.
I suspect that having very tight, formalized and public deadlines will force me to put something out. Even putting out something "not good" would be preferable to me not releasing anything while people are watching.
"Never got to bed satisfied."
It means, don't stay up all night fixing that issue, leave it till the next day when you will really want to start fixing the issue.
It seems to be a great way to maintain focus and motivation.
Are people aware of it and buying it - then it's ready.
If they're aware of it but not buying it - it's not ready.
If they're not aware of it - you'll never know.
The downside of basic income is that it would be directly given to everyone, which would simply raise prices to match or exceed the income raise. Basic economics makes the idea nothing more than a feel good folly. More demand due to a large consumer base + finite supply of goods = raise in prices to the limit the demand will sustain.
However, having engineers, inventors, and business people directly support a group of individuals that are not contributing would be even less unsustainable. Since a business is generally smaller and maintains a lower cash reserve, the business will fold faster if anything disrupts its cash flow.
At least communism mandated working for those who are able. It was an implementation of the "many hands make light work" theory of economics. It is unfortunate that it will only work in a worker economy rather than a creative or service economy. Automation pretty much ended the communist ideal.
On the other hand, not working... it is an attractive idea. Live the life of a gentile, pursuing one's own interests and hobbies, and having the freedom to seek pleasure as the desire strikes is an intoxicating concept. Automation seems to put that within reach. Having a small personal factory in a box that takes care of ones material needs for the cost of raw materials would drastically cut ones expenses drastically.
Until a large scale, automatic, multi-material 3D printer/manufacturing unit becomes a reality, that will remain a pipe dream. Even then, it would drive the price of raw materials up, unless there is a price fix in place to stop the rise. That price fix in turn would adversely affect the raw material producers and packagers. Even if they were heavily automated, they still have costs that have to be met.
More supply would also be a method of correcting the price rise from higher demand. Mining asteroids would be a major boon to the total amount of available raw materials.
We are still 2-3 generations away from widespread, purely autonomous labour that would allow everyone to live like aristocrats. Plus, someone will still have to do the maintenance work!
Even if robots fix robots, some intelligent corrections will be needed eventually. Limited, task focused AI can only go so far. General AI that think at near our level would not solve anything either... that just gives us a new slave race.
In the end, people will still have to work. Maybe not as hard or as often, but human effort will always be required to sustain ourselves in our current biological state.
Now if we could alter our biology to accept direct electric energy in stead of food the way some single cell organisms live... that would solve most of our real issues. It would sharply reduce demand our most resource intensive enterprise... agriculture.
I know that my current writing is a little jumpy, but hey I only have so much time... Time to get back to work!
The LLC allows you to enter into contracts as your firm and not you yourself. If any arrangement you enter into ever blows up and threatens you with tens of thousands in liabilities, the company eats it, not your home equity. If you're savvy at negotiating, you can even get some of your overhead expenses (rent, Internet) in the LLC's name, so if the firm dies you're not on the hook.
Having an LLC also makes it possible for you to do business-to-business transactions with big companies. Consultant friends of mine have learned that invoicing a bigco as a sole proprietorship is likely to end up with that bigco withholding taxes, or worse, severing the contract altogether.
The reason not to spend money now is that contract liability protection is really the only thing an LLC is getting you. Most of what you're spending legal dollars on with a new company has to do with equity allocation. With neither partners nor investors, there's no reason to get that stuff nailed down perfectly. In fact, should you ever raise a round, chances are you're going to rip all your current incorporation stuff up anyways.
Don't bother forming a corporation, renting office space, or even making business cards when you don't have any customers or revenue.
It's perfectly acceptable, and the recommended approach, to simply operate as a Sole Proprietorship (no legal entity for the business, just self-employed income for you) until you have a REASON to form a corporation -- things like, to mitigate liability, to hire employees, to take on investors, etc.
As a sole proprietorship, you can still do business under a company name - this is called DBA, "doing business as". So if you go to get a business bank account, for example, you can open the account under the name "Firstname Lastname DBA MyCoolInternetCompany". You can also get an EIN or TPIN (employer ID number, taxpayer ID number) from the IRS without an official business entity.
Later on, once you have customers and revenue, you can then form an LLC for a few hundred bucks depending on which state you are in. You can do this first, of course, before actually starting your business and getting revenue/customers, and many people do -- but it's a common mistake for new entrepreneurs to focus on the fun/exciting stuff like making business cards etc instead of the boring but critical stuff like, you know, actually making money.
In summary, if spending $100 is no sweat, sure get an LLC.
--not a lawyer--
How to start a startup legal lecturehttp://startupclass.samaltman.com/courses/lec18/
How to file in delawarehttp://corp.delaware.gov/howtoform.shtml
Types of companieshttp://www.bizfilings.com/learn/compare-company-types.aspx
Limiting your liability by setting up an LLC, or other liability-limiting entity, is worth the peace of mind, at least it is for me.
tl;dr the courts may see through the LLC "veil", determine the "company" is really just you, and may stick you with any liabilities/debts.
Once you gain traction or see you have revenue growing then form an LLC . . . I would only form a corp if you take on investment or your accountant recommends it.
I don't know if you can ask your management, but as a total outlier solution, you could try to spend some time listening to CS calls that come in. You didn't even have to participate on the call, just listen.
Ive found this greatly increases motivation as you actually start to see the need of why you're doing what you're doing. Most products / businesses are not really going to change the world that much, but hearing how something you built is actually helping someone's life can be very rewarding.
1. Lack of social skills.
2. Lack of ideas what to do with your spare time (at least I see it this way).
3. Lack of challenges and meaningful tasks in your current work.
The 1. is only a problem if you pay close attention to it and refuse to go outbecause of it.
The solution I see is to find a hackerspace (or similar association) nearbyand just drop in to hang out with others. You'll get socialized, you'll findnew areas you can look at and most probably it will give you an inspirationand new ideas, all at the same time.
This could solve your 1. and 2. problems pretty quickly, and in the long run,either 3. will become unimportant or you'll find a better job.
I would suggest finding an open source project you are passionate about. There are some really cool open source software applications popping up that need passionate developers like you to get involved.
That's how you make an impact - get involved and do something that benefits the community, and that you can be proud to have put your name on!
It might not help so much with your day job, but it will certainly open up new opportunities for you, improve your skills and look great on your CV. Plus it's a lot of fun!
Do a search in GitHub, or if you program in C# come take a look at what we're doing (yes, you can change the world!):https://github.com/Warewolf-ESB/Warewolf-ESB
1. Left the job.2. Got involved in other teams' projects.3. Colluded with other employees to break off and form our own company.4. Accepted it and collected the paychecks (that dwarfed the combined amount of what my parents made at their peak salaries).
You're not going to get what you want out of your job unless you ask for it. If it isn't feasible or possible for your workplace to accommodate you, then that leads you to finding it outside of work. Like mentioned in other comments - there's open source and charity organizations that might need something. If you don't have ideas of your own, you might want to find a business type person and help solve his problems. However, that will likely be quite similar to what you're doing now.
Consider doing something other than programming as well, or something where the programming is secondary. I, frankly, have lost a lot of interest in programming itself because I've been programming since I was 6 (>30 years) and I've learned over a dozen programming languages since then. It's lost its lustre for me. Changing the focus to the non-programming part helped.
The last thing to consider is getting involved in a university project. Those generally have enough difficult programs without the time crunch involved in industry.
1) Take a deep breath and relax. What you are going through is normal. Your whole life up to a few months ago has basically been spent working towards this ultimate goal of getting a college degree. It is normal to feel a bit of a let down coming off this achievement high.
2) Realize that developing an elite skill set is the key to finding exciting and meaningful work. For more on this check out this book: http://www.amazon.com/Good-They-Cant-Ignore-You/dp/145550912...
3) Get to work honing your craft.
You already kind of seem to know the solution: Work on your social skills.
Sign up for internet dating and go on dates with strangers. You will soon discover everyone is awkward and it is all okay.
Or go to tech meetups. Ask people about themselves and just listen to what people have to say. People love to talk about themselves and you can learn a lot about them and yourself.
It will be hardIt will be awkwardIt will feel really strange at first
But being really good at connecting with other people is vital to getting the jobs you want. Having hard skills is important too, but you seem to already have those.
In the meantime, start trying to think up ideas and write them down, even half baked ones. Idea generation is a muscle. At my peak I write down a new idea every few days. Sometimes that slips to once a month. Regardless, you'll find that if you start doing this, you start getting excited about those ideas which leads to....
...moving forward. Either to a new job, an open source project, learning a new skill set, approaching your boss with an idea, or a new geekup meeting or whatever.
What would you do if you knew you only had a year left to live, a month, week, day?
Get a remote job, travel the world. Join an exciting startup or start your own. Take a step back and think about the bigger picture, break the mundane system, you're in a unique space and time to do so. Do what makes you feel alive, if you don't know, experiment. Whatever you choose to do don't settle, you only get one chance...
Send them an email introducing yourself. Explain why you are interested in what they are doing. Explain what your skills are. Offer to help.
this will do two things - one, it will let you write code that keeps you engaged, without needing to come up with ideas for something to write from scratch, and two, working on a large and active project with multiple contributors, mailing list, irc channel, etc. will be helpful with social skills (at least as far as interacting with other developers goes) and might even act as a form of networking (i've seen several job posts made directly to community mailing lists, especially if the job is for a non-mainstream language or framework).
if you can list some of the things you've found fun or exciting to work with in the past, we can help make more specific suggestions of areas to explore.
I do think it works. I don't have any data, but I suspect iOS devs make a lot more than Android devs.
The main issue with many that fail to make sufficient income from their mobile apps is normally down to the experience that is being offered to the user. Your application might be amazing but if it is annoying the end user with ads, buggy, receives slow updates or new features that are implemented are not properly tested then eventually any success a successful application had will die off. Then there are always the short lived applications that are great at first but does not have enough variation of content to keep the user coming back over a long period of time.
It has been proven time and time again that anyone that can create a product that people love to use repeatedly over time that adds substantial value to their lives (fun, top quality advice, doesn't bore them, gives them that uncontrollable smile (oh man this is awesome, or mmm just one more level, or let me check appname for that) etc.) has ended up becoming a very nice return on investment for the developer of the application if they own all or most of the IP for the app or have a very good royalty contract setup.
Another option is, given Math / CS, self publish an ebook. I make a few hundred from fiction, and on a good month, enough to buy lunch or more via my non fiction tutorial style ebooks on Amazon and elsewhere.
Scrivener to create, Amazon KDP and Smashwords to distribute (plus own website, etc) and you're golden. A technical book can sell for $100+ bucks per month at ten copies, $10 each, and if it's enough to save somebody 1/2 hour of work, it'll probably do very, very well.
If you're going to give it a go I would track down some podcast interviews of successful iOS app developers and use their tactics for marketing, launching, etc. To give you the best shot at success. Good luck, enjoy the ski season.
I really like how easy Debian on the desktop is: install it, apt-get install xfce, and I have a nice desktop. It's very easy to add Adobe Flash, Steam, Skype, etc.
The FreeBSD desktop isn't as nice. You can add things like Flash and Skype on FreeBSD, but you have to fight harder and often use the Linux emulator. We're missing nouveau, I've had some kernel panics with the nvidia binary drivers (caused by nvidia's own shoddy code, not FreeBSD's fault), there's a lot of missing and unstable features due to developers primarily targeting Linux these days (Thunar's file refresh is glitchy and often fails to update, Thunar volman only really works with udev/Linux, mousepad crashes when you open a file an even multiple of 4KiB due to a bug in their code and a quirk of Linux mmap, livbte-based terminals tend to crash sometimes when you open them due to a bug somewhere between libvte and FreeBSD's /bin/sh, file-roller explodes when you try and extract large archives, Firefox has freezing issues with loading gigantic images unless you set MOZ_DISABLE_IMAGE_OPTIMIZE=1 in your environment, on and on.)
And it's also not really configured well out of the box for the desktop. I have to make this org.freedesktop.consolekit.pkla file and add entries to it in order to get the restart and shutdown buttons in Xfce to work. I have to create a fontconfig/fonts.conf file and substitute Helvetica with Sans in order to get Firefox to anti-alias text on web pages. And so on.
You are also doing all the setup from scratch. You install xorg, you install your video drivers, you set up xorg.conf, you create .xinitrc, you install a display manager if you want one, etc. This is both good and bad. It's great if you love tweaking your system, it's bad if you just want to throw it on a box and run it.
Moving on ... I really, really appreciate Debian's branches. If you install Wheezy, you can get security updates for packages, but not get version bumps. With FreeBSD, you have to choose between "the packages made at release time", or "the absolute bleeding edge." These updates can and do break workflows, especially on the desktop (Firefox pushed Australis on me, ibus moved to this braindead, slow-as-molasses super+space IME changer, etc.) The actual package installs are about the same for binary (apt-get vs pkg), but I much prefer FreeBSD's ports for building software (which is great when you need to patch software bugs.)
But if you're patient and good at fixing problems, you can end up with a rock-solid desktop. And hey, maybe PC-BSD will save you all of the above steps, too. I kind of look at FreeBSD vs PC-BSD as I do Debian vs Ubuntu: I'd rather know how things work than have it all done for me.
In terms of features, I really like FreeBSD's ZFS, even though it does eat a lot of RAM. Snapshots, whole-disk encryption on root, encrypted swap, mirroring/striping/RAID even across different disks, easy resilvering, etc. I also really like pf a whole lot more than iptables, as I find the syntax a whole lot more readable and flexible, although I will lament that FreeBSD's pf ships with ALTQ (QoS) off by default. I prefer the base system being maintained by the FreeBSD team. I like the consistency, the minimalism, and the great documentation.
Whenever I spot a difference between FreeBSD and Linux, I almost always favor the former's design: /dev/random behavior, jails vs cgroups, SO_NOSIGPIPE socket opt instead of needing the MSG_NOSIGNAL flag, etc.
I like that FreeBSD avoids a lot of the 'licensing wars' BS of Linux. I have Firefox instead of Iceweasel, I have cdrtools instead of cdrkit (I continue to this day to have issues with burning on Linux), I have ZFS instead of btrfs, we had sound mixing in an OSS fork instead of ALSA, and just in general I favor the BSD/MIT/ISC licenses to the GPL.
I very much like that FreeBSD is much more conservative about major changes, and open to choice, so we don't get things like systemd, Pulseaudio, etc pushed on us before they are ready for production. I used to love this about Debian as well, but they've really lost their way as of late in pushing systemd on everyone before it was ready. I greatly value stability over whiz-bang bleeding edge features. I like that FreeBSD is run by a democratically elected core team instead of by a benevolent dictator (I don't have to read what crazy thing Linus or Theo said today in the news.) I like that FreeBSD isn't balkanized into hundreds of different distros. I love not having people telling me to say "GNU/FreeBSD" whenever I mention FreeBSD. I like that third-parties like Redhat don't exert so much control over upstream.
I like the community of FreeBSD more, as it feels that most of the members are more technically oriented. Distros like Ubuntu have brought in a lot of users with little to no experience nor interest in learning the unix way of doing things. I'm not saying this is a bad thing, or that I think less of eg Ubuntu users, just that I prefer the company of sysadmins and developers over gamers and web surfers. I dislike that I can't really discuss the OS with anyone in real life, because it's too niche.
* Since it's all developed in a smaller community, and FreeBSD hackers/users tend to be pretty opinionated about many things, most subsystems have a consistent feel and are very unsurprising. This makes that you can often guess and be right. It also means you don't get to have some hyped trends. (I have the same feeling about the Go language and community by the way.)
* This might be subjective but I feel that many administration tasks are very transparent, orthogonal and simple. Many system configuration, like enabling of services, network configuration, can be changed by a simple setting in a /etc/rc.conf shellvariables file with defaults in /etc/defaults/rc.conf. Stuff ends up in understandable text config files. Comments and options tend to be simple and don't require --lots-of-long-options --which-i-cant-ever-remember which GNU utils seem to really love :(
* The base system is being developed in a conservative way. We never reinstall servers for a major upgrade, we just upgrade running systems forever. We have some boxes that come from FreeBSD 6.0 (2005) and were gradually bumped up without reinstalling. There is little switching around of subsystems, so you don't often have to learn replacements (like ipfwadm/ipchains/iptables). The OS is just a vehicle to me, please don't complicate my life needlessly!
* The storage options are pretty nice. ZFS is now a common buzzword so I won't go into it, also Linux is now getting a good replacement in btrfs. But I also like FreeBSD's GEOM, which has a lot of 'building blocks' that you can stack on eachother. For instance, you can use gmirror to create a RAID1 mirror, then use geli to create an encrypted volume on top of that.
* The ports/packages collection is a rolling release and generally has very new versions of apps from OpenJDK to Node to PHP etc. In my mind, it's best to keep your app stack continuously fresh, compared with lagging and doing large upgrades every few years. That way you get security updates from the app authors constantly, instead of from maintainers who backport it. I actually prefer this, since upgrading apps creates tangible value for our developers and customers, but it's a tradeoff. If you want to be hands-off, set-and-forget, no-budget-for-maintenance, then you might be better off with an Ubuntu LTS or RHEL strategy of locking apps into old versions with backported fixes. But damn, I cringe whenever I see a box with PHP 5.3...
* If you compile ports yourself, the port maintainers often create configurable options so you can build stuff with your own preferences. This is very useful for instance if you need ffmpeg with some specific codecs. It can be a real drag on Linux to get it just right. Creating your own binary package repository with your favorite custom options is super easy.
* We distribute that stuff like crazy (e.g. on appliances), and it's nice to be able to do that without having too much fear about the GPL(v3).
That said, there's some positive points about Linux (mostly Ubuntu/Debian here):
* Desktop support is undoubtedly better on Linux right now. FreeBSD desktops seem a bit like Linux desktops were in the '00s: manual twiddling, lots of tweaking, having to really watch what video and wireless hardware you get. PC-BSD should be better in this regard, but I haven't tried BSD on the desktop for years now. But I'm tempted to give it another try.
* I think AppArmor is a really cool way to constrain applications without going the whole container way, for which FreeBSD doesn't have an equivalent right now.
* While I'm skeptical about systemd's overreaching goals, I do agree that it is time to centralize service and event management. It's not a critical issue to me however, I'm not too bothered by the old inits for instance. So hopefully FreeBSD doesn't have to have a big controversy and pick the 'good parts'.
* Obviously Linux has a lot of momentum right now, so using it might be less of a long term risk in terms of support, hiring, etc.
Disclaimer: the following is all very opinionated and 8.1 is the last version of FreeBSD I actively used. Actually, it's still running without any problems on a colocated machine, but it's a bit a "don't touch it" situation, because upgrading even a single piece of software would probably cause a cataclysm of struggle. So I don't touch it (except for the occasional move of something to an Ubuntu vps), but it works like a charm.I've tried version 10 in a virtual machine because it had a new installer, but it was not the best experience ever (FreeBSD's x.0 versions have always been better to skip, the x.1s were fine though). FreeBSD really needed a new installer and they did some great work, but it did not yet feel very solid. On the other hand, I've had to restart the Ubuntu installer often enough as well and I have a love/hate relationship with both of them.
Okay, let's hit it.
FreeBSD: it's clean, it's minimal. It's very good for learning *NIX stuff because you will have to do a lot of configuration yourself. What they do is very well done and I'd say it's hard to break it. Jails are very cool (OS level virtualization), but like everything else in the FreeBSD world, it's quite some work to maintain. If it runs, it runs and will keep on running basically forever. If you want to upgrade stuff, brace, brace. The ports tree was amazing back in the day, but has been overtaken by stuff like apt-get. Installation of bash used to be like this: cd /usr/ports/shells/bash && make install clean. And then, depending on your hardware and de ports dependencies, minutes or hours of waiting on the compilation. You can upgrade your base to any version without having to fear. You fetch a specific version, compile all the things (again, that is a lot of waiting), run mergemaster to fix up your configurations, reboot and you're back.FreeBSD isn't very cutting edge on the level of hardware support, but it comes with OpenBSD packet filter which is the best firewall ever, it's very powerful yet easy to setup. Also, the zfs support is awesome. That file system is truly amazing, very flexible and serious about data integrity. It's cool until it breaks though, 'cause you'll be diving deep in obscure Solaris documentation and just praying to get your data back. But, I had zfs on an external USB drive and you just shouldn't do that. With built-in drives you'll probably be very safe with zfs.To sum it up: if you're patient, care about technology and have a lot of time, FreeBSD is truly a marvellous operating system that will never let you down. It's solid stuff and it's serious, but it is an investment.
Ubuntu: as someone who started with FreeBSD, Linux always felt a bit messy to me. We, the FreeBSD users at the time, used to make fun of Linux guys saying they have scripts for everything. And in some way I still think that's true. ;) The scripts in init.d very often have 'issues'. Ubuntu does a lot of stuff for you automatically. Installation of software couldn't be much easier and many times there's not much to configure. A 'disadvantage' is that you don't have to spend a lot of time figuring out how the software does and what all it's options are, it just works. The way configuration files are organised is pretty neat, with almost everything in it's own dir in /etc/ and foo.d dirs for adding extra options in small config files. (This is very contrary to FreeBSD, where you have one big /etc/rc.conf to configure the stuff that starts when booting and where you can define extra parameters for the software. There's /etc/ for configuring the base system and /usr/local/etc/ for placing files for software that's not in base.) When you're used to pf, iptables is just shit (but ufw helps a lot). It's such a struggle to configure.
So why did I switch from FreeBSD to Ubuntu? Reason number one is because the place where I started working had done that. I really loved FreeBSD and I didn't really had that feeling towards Linux, but using Linux in day to day life is just a lot easier. It's more common, most people use Linux so you don't have to do 'BSD specific stuff'. Also, I loved doing all the configuration stuff years back, but I know how it's done now and I mostly just want my stuff to work without spending hours on configuration and maintenance. You can do that with one FreeBSD server without any problem, but when you have to manage around 50 servers, it becomes quite a thing. Installing a new kernel on an Ubuntu server or upgrading software is super easy and you don't have to wait for hours because you don't have to compile all the stuff.
To conclude, I'd say: just give FreeBSD a try, it's never a bad idea to have a look at what others do. I just wouldn't advise rolling it out to lots of servers, unless you have a very specific reason to do so.
I've run FreeBSD on laptops, desktops and servers since 2.2.7. Laptops are not its strong suit. It works great for me as a desktop, but I've been tinkering with X desktop configurations for a long time, and don't mind doing some work to have a desktop that functions precisely the way I want it to. Also, it is not my only desktop. (/usr/ports/sysutils/synergy FTW!)
Servers and network appliances are where FreeBSD really shines. The ports tree can be updated independent from the base OS and the base OS can be updated independent of ports. No upgrading to a new OS just to get a security fix for your web server.
ZFS is brilliant. ~7 years of FreeBSD/ZFS and no issues.
PF makes every other firewall I've run (including every commercial option) look silly. PF is like the Python of firewalls: optimized for readability. Add in CARP and PFsync for easy fault tolerance.
The project is managed by a democratically elected core group. Like a real democracy, sometimes this means change happens slowly. But the deliberate approach to change is part of what makes FreeBSD great. It's stable, predictable, and reliable. It functions as a well-engineered, well-documented whole.
FreeBSD's biggest fault is how little attention it draws to itself. It is quietly brilliant. It just works. It doesn't try to do everything. It's just good, reliable infrastructure.
FreeBSD has the concept of a base system: a set of tools intended to worktogether harmoniously, maintained by a core group of people. You can easilyfind evidence of this by looking at the source code; the userspace tools sitright next to the kernel. This is in contrast to _GNU_/Linux, where everything(including coreutils) is pulled in from various sources. Many Linuxdistributions emulate a base system by including utilities that transform thekernel into a complete standard system (e.g. Debian).
Linux has a benevolent dictator who decides project direction, while FreeBSDhas a core group of contributers who decide the future of the project. However,I'm not sure that the Cathedral vs. Bazaar is a fair comparison to impose onthese projects. In any case, both projects seem to have been getting thingsdone, and unfortunately (or maybe fortunately), I'm not too savvy on internalmanagerial disputes or issues.
The closest Linux distribution to FreeBSD is most likely Gentoo Linux, as itsPortage system is very heavily inspired by the FreeBSD Ports system, in whichall "packages" are simply recipes to build from source. You can even run theGentoo project on a BSD kernel, although this sickens most FreeBSD usersfor some reason. Most other Linux distributions default to installing binarypackages, which is also possible, but not traditional in FreeBSD.
Linux has recently added LXC, while FreeBSD has had Jails for a while now.LXC is much better marketed than BSD Jails through Docker, butAbsolute FreeBSD has an excellent section that describes how to do isolateddeployments via Jails. FreeBSD also has the Linuxulator that emulates32-bit Linux system calls via FreeBSD system calls, allowing users toseamlessly run Linux binaries on FreeBSD. The FreeBSD startup system, however,has stayed more or less the same for the past few decades, revolving aroundan rc.conf file and init scripts. Linux has seen many more efforts in thisarea, including systemd and initramfs.
BSD projects use a BSD license, which many businesses prefer over the GNUlicense used by Linux. However, this is a discussion that deserves more thana small summary.
Linux is most likely to support recent hardware because of extensive userbaseand industry support. For example, NVidia's latest CUDA SDKs always have Linux bindings, but not BSD ones.
The BSDs have great reputations for killer implementations of TCP/IP.
The BSDs have been using the GEOM disk management system for a long time,which is one of my personal favorites in terms of features. It allows you totreat character and block devices as pipes, so for example, adding encryptionis simply "piping" a bare disk through an encryption layer, resulting in a newdevice. You can even "pipe" things across the network. Linux is somewhat caughtup via device-mapper, so this is not a huge deal if you're trying to choosewhich one to use. Both are great operating systems. Just use whatever works.
It's likely that you know things that I don't, so please feel free to correctme if I'm wrong.
I have always found that FreeBSD has had a much cleaner and more orthogonal feel as a system than any of the Linux distros and was always much more familiar for UNIX 'old hands'. If you come from the school where UNIX systems shouldn't have displays or the frippery associated with PCs and should be interacted with from a terminal you will probably be comfortable with FreeBSD. It shines as a rock-stable server O/S and in most cases trying to use it as a desktop is going to be fairly frustrating - the easiest way round this is not to bother and buy a MacBook Pro.
My view is that in the late 90s early 2000s adoption was impacted fairly significantly by two rather flaky major releases (3.0 & 5.0) where major bits of the system (SMP/Giant lock) were upgraded and took a long time to stabilise. These felt like a step back from the previous rock solid releases (2.2.8 & 4.11). Realistically the next really good release was the 8.0 series but since then the pace of development has really taken off and the 9.0 and 10.0 series are outstanding.
My view is that it is a great choice as a server O/S - with the significant commercial backing as an embedded O/S looks to have a strong future. I know that there will continue to be an interest in getting the desktop bits working but to be honest I think that this is a lost cause and should be dropped (though I acknowledge that the PC-BSD team doesn't agree)
One other point is that there is probably a chunk of the Linux userbase who probably shouldn't try FreeBSD as it really isn't aimed at them.
Excellent network support
Friendly, knowledgeable devs and tightly knit community
Runs most GNU/Linux apps via ports or jails, sometimes better than on Linux
Easy to learn given prior 'nix experience
Difficult to learn if you're new to the 'nix world
Smaller pool of compatible hardware
The above has been my personal experience and obviously won't be the same for everyone. Also, I'm most comfortable with Slackware Linux, which is very BSD-like compared to other Linuxes, so that probably influences my point of view. Generally speaking, I like FreeBSD but I don't run it as a production machine (yet) since I'm happy with Slackware. Should that ever change (and there's only one reason it would, and that doesn't need to be rehashed here) I'd be able to switch to FreeBSD relatively easily.
Something else you might want to explore, as an easy introduction to FreeBSD, is PC-BSD. It takes FreeBSD and makes it much more user friendly, with a focus on being a GUI based desktop OS (though they do offer an alternate server installation as well).
 While the official list of compatible hardware is extensive, I've found in practice that certain COTS hardware simply doesn't work well with FreeBSD. I've even had professional workstations like a Lenovo ThinkCentre refuse to boot the installation media, throwing a kernel panic instead. I've also had poor luck with cheap motherboards. Generally, my best experiences with installing and running FreeBSD have been on Dell and HP workstations, and on quality motherboards from companies like Gigabyte and ECS.
I'm still in the automotive field but now I work on embedded stuff. I'm one of the software developers behind CUE (Cadillac User Experience) and Linux is the go-to defacto standard pretty much because all the BSP (Board Support Packages) run Linux. For example, Freescale iMX processors and their demo kits are all Linux based and so brining up drivers for iMX ethernet, SPI, GPIO, I2S and I2C have some sort of vendor support.
The large fortune-5 companines indirectly support Linux by entering multi millon dollar support contracts with companies like Novell and RedHat. To give an example: We once had an issue with CUPS where the root cause was a software bug. Novell, under the support agreement, fixed the issue and then submitted the patch back to the open source community.
So from my perspective, I can see how Linux seems to have more traction than openBSD. Linux seems to have a larger following in the automotive sector but I'm not sure if Linux's success is because of these factors I'm pointing too or if these factors are because a lot of people just know of or about Linux more so than openBSD.
There also seem to be more company backed open source projects that support Linux before openBSD. Example is Yocto which advertises itself as an open source Linux build system. And recently Freescale has been moving their LTIB BSP tools to Yocto.
I would be interested in hearing how others industries are using Linux outside automotive.
It confirms to recent UNIX standards, such as various POSIXes (pthreads, rt extensions), UNIX98 (I guess), etc. and obviously don't have any Linuxisms, like udev, systemd (thank god!) fuse, you name it, which aren't that important for a server. So you could compile as a port or install as a pre-compiled package almost everything you want for a server.
It runs on pair with Linux on network and application performance, in some cases even slightly better. Notably, nginx prior to version 1.0 has been developed on FreeBSD.
Nowadays here are a few obvious disadvantages.
1. Driver support is fair - it runs on standard modern hardware, but cannot be compared to Linux with tens of thousands of contributors, it has very small core-team.
But it considered much less "marginal" than, say, OpenBSD (which is very clever in its own way) or NetBSD.
2. Vendors doesn't support it, so basically you wouldn't run, say, Oracle or DB2 on FreeBSD (while there is a possibility to install some Linux binaries with emulation). Notably, there is no that "certified, safe Oracle JDK" for FreeBSD, only "unofficial" OpenJDK port.
Not long ago it has a reasonable share of all Internet servers and the recent decline isn't due to any quality or reliability issues with FreeBSD, but because "too many Linuxes everywhere".
It has some clever technologies of its own, like netgraph, jails+union-fs (which is you could call "chroot-based containers before Docker") native ZFS support, etc.
Lots of sane people ran FreeBSD in production, Yahoo is the most notable example. Russians love FreeBSD too - many early ISPs and hosting services has been built on top of it. Lots of developers and contributors are from Russia.
So it is modern, reliable UNIX for servers. But not that popular, of course.
(I don't want to start a flamewar, just add more stuff for a good discussion)
- kqueue is a very powerful event loop similar to epoll 
- the FreeBSD ports collection is very simple to use as far as compiling from source goes. I only really prefer Debian's apt-get and Gentoo's emerge
- the FreeBSD Handbook is a very well-maintained text . I freely admit OpenBSD has the best man pages ever written, but the Handbook is good too. Not bleeding-edge talk like the gentoo-wiki or archwiki, just reliable information.
I have both FreeBSD servers and Ubuntu servers. Thing I like the most with FreeBSD is its further separation (compared with Ubuntu) of OS (kernel and world) from third-party software.In Ubuntu every package comes in multiple versions for different releases, in FreeBSD there's only one version.
There's no "because I want git 1.8 so I have to upgrade to Ubuntu 14.04", in FreeBSD you can install the latest version of git on all supported OS versions. (In my experience even a slightly outdated OS version can run latest third-party software quite smoothly)
Software in FreeBSD Ports (its system getting third-party software) catch up with upstream releases very quickly. You might think they have less testing than that is in Ubuntu/Debian, but I don't know if it's really the case. Though I rarely encounter bugs with these cutting-edge software in FreeBSD.
I speak mainly from the experience with Ubuntu, I'm not so familiar with other Linux distros.
Sometimes small size means things can change faster, eg NetBSD has had 64 bit time_t since 2012, while 32 bit Linux still has no roadmap to fix this (the BSDs are also have a different compatibility model). Other times it of course means that less is done and things take longer. You will often hear people say the BSDs are better designed, as perhaps prioritising limited resources leads to more design, or maybe there are just fewer people who need to solve a problem fast but not so well.
Including (some) userspace means that the tools are less bloated than the GNU ones which were designed pre Linux as portable tools, before the Gnu project had a kernel - remember GNU was the cathedral in the cathedral and the bazaar.
What's kept me on FreeBSD is the Ports tree (the third-party package build infrastructure). I love how easily I can build customized packages for my computers, especially now with pkgng and tools like poudriere (refer to this great tutorial at http://www.bsdnow.tv/tutorials/poudriere). I can very easily set up my own custom package repository that either supplements or wholly replaces FreeBSD's. I've tried to do similar things with Linux, but it definitely isn't as easy. The ports tree committers are very responsive, and creating (and submitting!) one's own packages is both well documented and very easy.
I like how much of the system configuration is done in /etc/rc.conf. I like how the various system and ports tree build-time knobs are all in /etc/make.conf. I like how daily maintenance scripts/health checks both run by default and are all configured in /etc/periodic.conf. I like how understandable the base system is, kernel internals included. I'm no expert developer (and believe me, there's plenty of advanced Unix hacker wizardry in the FreeBSD sources), but things are accessible enough to even one such as me that I successfully modified the ciss driver this year to work around a weird bug in some old server gear I was experimenting with.
Don't get me wrong - I love me some Unix, but modern Linux distributions seem over-complicated in a lot of the ways I don't like about Solaris or AIX or Windows, even though there's a lot of nice stuff from the perspective of an end user. If you install Ubuntu or Fedora, a lot of stuff Just Works(tm), and that's great! I love Ubuntu and Fedora! But if anything breaks and I have to go digging, things get complicated so rapidly that it makes debugging more of an effort than it should be.
1) userland and kernel owned by the same group. this lends consistency to the experience, that is absent in linux, where it's clear that it's an amalgamation of many different tools.
2) (largely) one way of doing things
3) package management system (pkg-ng) that is a cross between gentoo portage and debian apt-get
4) extremely good documentation for an open source project (https://www.freebsd.org/doc/handbook/)
5) configuration is very simple (mostly driven from rc.conf)
6) excellent full-disk encryption support (geli)
driver support always lags a bit behind linux, on the other hand the drivers that do exist i'm confident are stable. i make sure to buy hardware which i know is supported.
The userlands are pretty similar, I think, they both support the GNU tools, as is attested to by the existence of Debian/kFreeBSD.
I don't know what the OP's motivation is, but I'm an enterprise server admin, with lots of Debian experience, but no real FreeBSD knowledge at all. I've been looking at Debian/kFreeBSD off and on for a while as a way to get at ZFS, and possibly better NFS performance. I was actually planning on deploying some experimental Debian/kFreeBSD systems when Jessie releases, but it now looks like that might not be such a good plan: http://lwn.net/Articles/614142/
Linux has vsyscalls which makes it performant for the typical LAMP stack. If you profile a PHP Zend framework "hello world" app it makes 20k+ calls to gettimeofday(), which is very slow on FreeBSD in comparison. Throw a couple hundred requests/s and you saturate the CPU for no good reason.
FreeBSD needs business support in order to maintain funding, and be a relevant competitor to Linux. If a developer were to pick a popular application stack like node and identify significant performance gains it would make waves.
How does the storage stack compare? I really love ZFS and have used ZoL quite extensively in the past for a VPS/baremetal backup system and of course FreeBSD has rock solid ZFS support. But Linux has bomber RAID, LVM, dm(which lets you write you're own targets and do all kinds of awesome mapping) etc.
And then of course there are "containers". I'm aware of jails and they are much tested but I saw the other day that they don't have cgroup type features to allow controlling RAM and CPU usage? Namespaces? Is it the case that Linux containers are overtaking jails on the features front?
I really like the idea of FreeBSD and I have bought "The Design and Implementation of the FreeBSD Operating System"(which I ought to start reading) but I'll admit to not knowing a whole lot about it. Most of the topics that come up in comparison discussions seem a bit more superficial than what I'm interested in.
AWS and GCE have support, but it seems the kernel is provided by a FreeBSD maintainer rather than AWS or GCE. How stable is FreeBSD on AWS or GCE ?. And are there any companies using FreeBSD on AWS / GCE ?.
Do you manage thousands/hundreds/a handful of machines?
Or is your interest entirely academic and structural?
I agree that most of the obvious Google searches return superficial comparisons of the installation process or explanations of the packaging and upgrade processes.
Other than the basic tech there are 2 important differences. First is the that there is one FreeBSD but there are hundreds of distributions of Linux. And among them you'll find much larger differences than between FreeBSD and the popular Linux dists.
The other big difference is simply derived from the fact that Linux is more popular. It will tend to have better drivers, have more bugs worked out of the software, etc., just like any other free software out there. FreeBSDs conservative nature towards its core software more than mitigates this, but for all the peripheral software it will matter.
Anyway, I like the first comments idea about a wiki. That would be helpful.
I've never used a BSD or even looked into it... given what I read there, it seems like it'd be a lot nicer in at least one sense, since Debian releases die off and release-upgrade can be either perfect or very painful.
On the other hand, I do love how small and unassuming a basic Linux installation is, and -- as the author repeatedly and correctly stresses -- I'm used to doing things the way I currently do them. That's not good or bad, it's just momentum.
I do hope I'll get the chance to work with a BSD at some point, but much like my attempts to really get into Clojure... well, unlike the Stones, most of us do not have time on our side.
Their staff are technically savvy, and I don't know of anyone else who has tested the options in this way, in production. They have a popular mobile app which turns your phone into a walkie talkie and more, and have millions of users.
I saw them interviewed about their move to FreeBSD recently: http://youtu.be/NGT3jpilYfE?t=15m
I like FreeBSD, but I have yet to run the same stack on multiple operating systems in production. That's a LOT of work!
There's no such thing as an unbiased identification of strengths and weaknesses, especially when it comes to monoliths like operating systems.
You say you're not interested in arguing about which system is better -- and I believe you -- but you're also asking for argument about which system is better, in list form. Heck, even your title has a versus in it.
That said, I join you in looking for a concise source of information about FreeBSD's design and usage in the wild contrasted with Linux.
It appears that OpenJDK is the best option on FreeBSD right now - but is it something one can trust as much as Oracle's Java on Linux?
These are mission critical servers, so I would hesitate to take chances. To put it in perspective, even the latest Java 8 has a serious bug (on Linux) that we've recently reported to Oracle, so we'd like to be as risk averse as possible.
$ uptime11:23PM up 835 days, 5:33, 1 user, load averages: 0.07, 0.02, 0.01
If you wanted to create Ubuntu today, would you use GNU/Linux or FreeBSD as base?
Go for the degree. If you ended up with a Senior role then you have lots of experience already, I assume. You'll ALWAYS be able to find another job. With a PhD in Crypto, you'll be able to move towards a Crypto job, or teaching if that floats your boat.
Side note: I am very jealous and a bit inspired. Former military and my academic route is mangled with starting late and working full-time as a developer, and so I'm hoping to complete a bachelors by 28 or 29 at my dismal pace. The fact you 're looking at going back to school at 30 for a PhD makes me feel like it will all work out one way or the other.
Why did you always wanted to have a PhD? Do you want to work in research or academia?
- Cards (debit, credit, etc) are inherently insecure. When all the information you need to make a purchase is stamped right on it and or completely public (e.g. address).
- "Verified by Visa" and "Mastercard securecode" help a little but they're badly done, poorly supported, and are trivial to bypass (they also rarely work on mobile devices).
- This is largely a parental issue. You aren't bringing up a "good kid" if they either A) don't understand the value of a pound, or B) do but don't care.
- Parents often blame the companies for "allowing" this to occur after the parents themselves knowingly added their card onto a system their kid has unlimited spending potential on (e.g. app stores, other digital goods, even Amazon).
- I think it would be a nice gesture for EA to refund SOME of the money but, frankly, the parents deserve to take some level of hit on this one.
- Most banks suck at informing their customers about unusual activity, like 2500 pounds on digital goods over a short period(!).
In the future, I'd recommend a pre-paid card, like others have mentioned. It will teach him how quickly 25 pounds can disappear even when it's only a few quid here and there.
Some of my favorite toys were Legos. My little brother used to get all the Lego presents growing up (because he was a boy) so I would use my allowance to buy my own. When she's old enough, try out the Lego Technic series or the Mindstorms. I had the entire first-gen of Bionicles (this is where my allowance went for a year), a Mindstorms R2D2, and the RCX 2 Mindstorms kit by the time I entered middle school.
I don't think you'll get a lot of mileage with the prepackaged science/engineering kits. I used to get those all the time for presents. Barely used them. They're just not that fun and don't have a ton of reuse. You also get seriously railroaded. You want to explore at that age, not follow a set of instructions.
Same goes for telescopes. The kind that parents are willing to buy are the kind that will probably get used only a couple times (unless your kid is REALLY into space). Also applies to the star-projector things.
Set, the card game. What a great game.
Equations is a competitive math game for 3rd-5th graders. You can scale it for lower grades by taking the exponents and square roots out. It's best played amongst peers. Get the rules off the internet, not from the boxed instructions. I was pretty good at it back in the day--my team placed 3rd at regionals. I volunteered with my old elementary school's Equations club a few years back and whooped those kids (still got it, baby). ;)
I think early access and training in hardware tools can really open up the possibilities for any kid that likes building things. I was always building things as a kid.
EDIT: Punctation and details.
Its certainly too advanced for a 6 year old (or even a 16 year old, TBH) but just having it around is really great, I think. I remember when I was younger, I would look up stuff in more advanced books even if I couldn't understand them right away. The feeling I had was always: "Someday, I will be able to understand this..." which made me learn more physics and math.
"How to Solve it" is especially great if you do/will teach her in the future.
magnatiles, squares and triangles that snap together to make buildings and other structures, high quality and all kids love them. (they are pricey but this is one of the best toys we ever bought, now at target).http://www.amazon.com/Magna-Tiles%C2%AE-Clear-Colors-100-Pie...
Legos in general . . . are great. Mixels are popular now and give you a lot of creative options to combine them.
Consider lego mindstorms a little advance for 6 but something you could build projects on together. (check out the Lego Jr. FLL program and FLL robotics competitions for kids).
The snap circuit sets are fun, again something you can do together initially.
html/css is always fun for kids, get them a domain and hosting and start teaching the basics.
There are lots of great how things work books out there and lots of great documentaries on netflix.
Create a water board . . . get a square piece of plywood and attach tubes, containers and help them set it up to flow top to bottom (great fun in the summer).
For <= 3 yrs here's another list...http://www.amazon.com/registry/baby/3TYUVBEO9672C
The online shop for the new Museum of Mathematics in NYC has some of fairly cool stuff, also:
EDIT: I don't remember pentominoes being square, more triangular/rhombus shaped. Wikipedia shows unfamiliar shapes: https://en.wikipedia.org/wiki/Pentomino
Also not sure if Capsela is still around but I loved those.
Jordan - FolioSwarm
Not sure if people still play with ant farms, but Darwin and E O Wilson both played with bugs.
First, is an ecommerce company a start up. According to the current generation's definition of start up, kinnnda sorta. A start up is synonymous with growth. Ideally, an ecommerce company should be that, but if it is something that falls into more like bespoke systems, then no, it isn't a start up. Yours sounds more like the product type kinda of ecommerce site (sign up and set up your shop) so yes it would fall into a start up category at some point.
Second, is it tech? Forget being a start up for a moment. Is an ecommerce company a tech company. Having worked in the ecommerce field, I know the answer to be this; you decide whether or not it's tech. The ecommerce experience I had was largely a sales driven one. Tech took a back seat for it. I've consulted for another ecommerce company, whose primary focus was great customer care, followed by online conversion optimization. Their tech interests were limited to customer profiling and facebook ad targeting. None of them were tech start ups. They were just start ups (ish).
This begs a question. What makes a startup a tech startup? For example, what makes medium a tech startup? In their case it's all about the experience of the writing application and reading. Technology is solving tough problems and driving them forward. And that's really it, is technology solving the problem? More importantly, is tech driving the business forward.
In the cases I mentioned, tech was the back seat. Tech enabled us for sure, and if the site was down we'd be dead. But really, it was just a magento site with a custom theme on top of it.
In your case, beyond building out the initial product, what's going to be a primary driver of the business here? Is it all about the marketing? Pushing sales people hard? Being crazy about customer service? Building a product that does some technically amazing things along the lines of data crunching? Thing is, you probably don't know yourself. You might like to think it's all about the product, but at some point you might decide that you've done enough on the product and everything is driven by a 'phone-to-phone' aggressive salesforce. Who knows?
Short answer to your question so far, if you envision fast growth of users, and your business is driven by technology solving real world hard problems, then it's a tech startup and yes, a hacker/techie would get behind it. A start up using tech is not the same as a start up driven by tech. As for interest, techies are attracted by interesting problems. The best way to know if you've got an interesting problem on your hand, is to talk to them about it, and see if they are interested.
Heck, I got behind the ecommerce venture I was in simply because I was using technology to solve backend problems in the company. That's what got my gears rolling.
But all this raises a more serious question. Are you doing this primarily because you are fascinated with the idea of a tech startup? Or are you doing this because you have a real problem that you've (ideally) validated and you want to solve and you need strong technology backing it? You've probably guessed the answer should never be the former. One last note before ending this long comment, don't force your startup to be a 'tech' one.
Maybe it's not and that's cool.
Mind if I do some quick copy-edit?
- "Save yourself hours in reading through API documentation to build this yourself."Keep the tense consistent: "reading through API documentation and building this yourself."
- Photoshop/GIMP the imgflip watermark out on step6.gif
-"...only charged for successfuly sent SMS..."should be "successfully"
"You are losing customers right now. Desktop viewers of your website are leaving without downloading the app..."
Here's a friendly tip from a conversation between Amy Hoy and Nathan Barry that can be found here -- http://nathanbarry.com/step-by-step-landing-page-copywriting...
Nathan: Good. I wrote out half a dozen headlines trying to get at the core pain.
Amy: How would you feel, though, if a stranger came up to you and said Youre losing hundreds of sales.?
Nathan: Who the hell are you to tell me whats wrong with my business
Amy: Right, me too. Not because youre not interested in getting extra sales, but because it SOUNDS like youre being attacked.
Nathan: Good point.
Amy: I tell my students to be very careful with statements that might sound accusatory.
Obviously you've already got a bunch of subscribers - well done! - so it has some value, but talking about monthly income after 6 weeks seems a little premature - my initial instinct was to flag it for spam. Might be better to phrase it as '$1100 subscriber income in 6 weeks.'
Edit: 'Concept' refers to the underlying idea rather than the current state of the product. If you don't like pedantry then you should probably eschew it in your own responses.
Loving Slack, even with the TOS hubub.
Just getting started with FrontApp but they seem great for business / shared email accounts.
Firebase for our DB, they've been super helpful.
Github of course.
Google docs for shared docs.
KeyPassX to track all the company online accounts.
|KillerStartups.com - $169 to get listed in a featured blog post.StartupLister.com - $50 bucks and we got some paid traffic from it.Leadfeeder.com - free.
To add to your list briteverify.com braintreepayments.com clicky.com