What is the fastest way to learn from pet projects? [closed] - projects

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I want to make really good websites.
Pet projects do really help in exploring blank spots and consciously mastering aspects you want to acquire.
I'm happy with the process and the result but what to do next with this product?
Users start to use it and I don't want to support them because I want to continue building my skills, not end user products. Hosting for all these web apps cost some money too.
Should I just code it till I find it interesting and technically challenging and then just junk it and move to another one? Or release everything as Open Source and don't care about support?
The reason why I don't want to do support is because I want to specialize. There is too wide topic already so I don't want to wide it even further.
I heard about the idea that you shouldn't care a lot about what you working on during your early years in development because pretty much everything will be junk. So just try more. Is it the way I should follow?
What is more effective?

You don't say how technical your websites will be - are you looking to build pure HTML, more dynamic DHTML or web applications with server scripts?
Regardless, you should look at taking on pet projects that challenge you in a variety of areas. As you get more experienced with web projects, you'll find that you end up doing many tasks over and over for different projects.
A good start would be to take on pet projects to tackle 'common' problems (layouts, styling, user logins/sessions, persisting data etc) and then look to abstract your work to a series of components that you can reuse in future projects. This way you will build up a library of reusable 'widgets' that means you don't have to scrap everything and start again each time.
As you get more experienced, set yourself tougher challenges, and before long you'll have a considerable arsenal of sample code, if architected well it will be mostly reusable, and at the same time you'll expand your experience.
Good luck!

I wouldn't say your early years are junk. Let's not think about the obvious intangible gains, like experience, insight, pattern recognition..etc....one tangible gain to think about is the development and organization of your own method libraries. My early years were in ASP so having my own set of includes was invaluable to my overall success and efficiency. I'd carry over a set of utilities and databasing methods that I had previously developed so new projects got easier and easier because the bare bones stuff had already been vetted.
It may not be important as it was 10 years ago because class libraries are getting so robust ...but you'll still find that as you develop new projects it'll be very useful to have utilities that you've already developed and organized into your very own class libraries.

Related

When to go from basic .erb to Sinatra or Rails [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
In the old, pre-Ruby & Rails days o' the web, one typically used PHP when they needed to add server-side functionality that HTML or CSS could not provide. Nowadays, we have a ton of options for creating super-dynamic websites and applications. I recently discovered that you can just use .erb files on a web server to get the same functionality as throwing PHP files in there in order to make things more dynamic.
I am building my first from-the-ground-up website, which will actually be my own personal website. I'm a huge Ruby nerd, and definitely want to invest in the technologies I'm most learned and familiar with. I want to build with a focus on simplicity, speed, and power in mind. I love Rails, and have had the most training in it, so I am, for the time being (for version 1.0 of my beloved sexy website), excluding Sinatra or other frameworks from my list of choices.
Now, here's the question, which is admittedly a bit ambiguous: when is it appropriate to go from using regular old .erb files to using a full-blown Rails framework? The website won't be processing any users or anything, and will mostly be a portfolio for my art, music, and technology works. I'll be doing a blog with Jekyll, additionally, so that level of dynamic content will be handled separately.
Strait ERB files are great to set up a simple template system. Jekyll is a more robust way to build a simple static site using templates. It's great for a personal site that doesn't have dynamic content, it doesn't work when you have users storing new content constantly to a database, which then needs to be rendered on the fly to a new page. Rails is based on the idea that you need a database, if you don't need it skip Rails and save yourself loading time, hosting costs, and sysadmin headaches.
Also check out https://github.com/laurilehmijoki/jekyll-s3 you can host your site on S3 for dirt cheap.

How can one learn multi-threaded parallel programming? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
No matter how proficient you are at programming C or Java, you should consider adding multi-threaded programming to your set of skills.
This is NOT something you should try to learn on your own. It is MUCH harder to learn than sequential programming. If you are a Technical Manager, you SHOULD invest in retraining your key staff in multi-threaded programming. You might also monitor the research activities in concurrent programming languages (like those listed above). You can be sure that your competitors will.
This is a quote from this article. I imagine most of us here are very proficient in teaching ourselves different languages, data structures, algorithms, etc, and I do recognize the mental shift that needs to occur to do parallel programming right.
I reject the idea that one cannot learn parallel programming "right" on their own. So what's the most responsible way to teach oneself parallel programming? What books and other resources are recommended?
Edit: Here are some more details. I would be mostly applying these to scientific computing, but I was looking for general, language-agnostic material/advice. I am also looking for a heathy dose of practical theory. Imagine you have an excellent developer who loves math and computer science, but never took a course on parallel programming. Now imagine he has a deadline for a problem (say 1 year), and you have to give him the materials to figure out whether parallelization would be helpful, and how to implement it right. What resources would you give him? That is how I (and I hope other developers) would be interested in learning parallelization/multi-threading.
If you pitched up in my workplace and asked that question I'd throw a couple of books at you:
Introduction to Parallel Computing and Parallel Scientific Computing
Your response may well be 'that's not what I want to learn about !' so come back and be a bit more specific in your question and we'll be able to be a bit more specific in our answers.
But the most 'responsible' way to teach yourself this stuff is the same as the most responsible way to teach yourself any programming stuff: get a problem, get a toolbag, get a deadline, and get cracking.
For Microsoft technology, there is a wealth of information at the MSDN Parallel Computing portal here. You could start out with the Getting Started links.
That article is basically an advertisement for training services. You should treat a salesman's opinion of the value of his own products with a degree of circumspection.
I've no idea how you learned everything else you already know about computers, but if that worked for you I'd stick with the same approach for the next thing you want to learn.
I can't recommend any language/platform agnostic books - I suspect they'd be very academic anyway. If you're actually on .NET, then Jeff Richter writes a lot of good stuff about threading, and I believe the 3rd edition of his C#/CLR book (earlier editions were excellent) has a great deal about parallel programming.
if you read everything Google finds for the stuff below, you'll have a pretty good start. Assuming general IT background, etc. These are not language or OS specific:
Peterson's algorithm
atomic test-and-set
critical section
rendezvous
memory barriers
lock-free algorithms
The mathematical background of this is probably Petri net.
Read Dijkstra.

Wanted: suggestions on how to implement subscription / recurring billing [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I would like to set up a premium subscription service for a PHP/MySQL based site. The site is Wordpress based, but highly customized and I'm not looking for a plugin solution necessarily. To oversimplify, I need to query the signed in user's subscription level (paid or free) and tailor the content that gets presented accordingly.
I'm looking for suggestions on how to implement the back end for billing/payments. I know one option is to use the paypal API, but I was wondering whether there are alternatives that I should also be considering. One thing I have noticed with many sites using paypal is that the experience is quite disjointed in the way one gets passed from the original site to the paypal site and back again. Is this just the way these sites have implemented the integration or are there better options than paypal from a UX point of view?
Also...
Have you used any tools / libraries / services that made this easier?
Do you have any advice on this topic in general? Gotchas, pointers, etc.
Finally, we're not a large corporation (yet), so a solution that could scale with us would be ideal.
UPDATE: After learning an enormous amount about the different options, we decided to use Braintree. Deciding factors were:
We could easily get full PCI
compliance and still control the
user experience completely with
their transparent redirect
They guarantee portability of your
customer data from their vault (very
few vendors do this)
They remove
the need to set up your own payment
gateway and merchant account
I wrote a detailed review here: http://expletiveinserted.com/2011/03/18/comparing-recurring-payment-solutions/
I also put the cost comparison list for our shortlist of solutions here: http://expletiveinserted.com/recurring-payment-cost-calculator/
Every payment gateway is different, and whichever one you decide to go with will provide complete instructions on how to integrate with the various features they offer.
PayPal is of course the only one that is not regulated by any governmental body, and coincidentally enough, the only one that makes their money by robbing people blind. Shouldn't be too hard to find thousands of horror stories if you look.

Resources/Exercises to do when learning a new language [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I was looking around SO to find some exercises or interesting problems to do when learning a new language. Mostly of the time learning a language directly from reading the book does not work, even when a book tries to make an application from scratch to end.
Besides Code Kata, 15 Exercises to know... and Project Euler what are some other resources?
Also, what if the language in question is mainly used for web development..or that is the main intent of the developer for learning the language. In those cases, I doubt stuff in Project Euler will help. Are there sets of functionalities that should be implemented in a web app for a developer to feel confident about his skills in that language/framework?
The main and best resource is tasks that you care about! Come on, don't you have a backlog of "N cool things I wish I could be doing (to make my life -- or somebody else's -- better)"?! I've had dozens and dozens of things on such backlogs ever since... well, as far back as I can recall. So pick one, and do it with the new language (or framework, or whatever) -- the fact that you care about the result, rather than it being an artificial task set by somebody else!, makes all the difference!
When learning a new language I usually build something that I've previously built in another language.
Try to rewrite some simple tools you wrote in another language, if it is possible. In this case you'll know what do you need to do it and what is the difference between those languages.
FizzBuzz ( this is for the req. )
Create something that the language you are learning is good at. For instance, if you're working with Ruby on Rails, make a data driven web application. If you're working with Perl, write something that does advanced text parsing. Most languages were created to solve a certain set of problems. Focusing on those problems allows you to learn the differentiating features of the language you are studying.
There are many puzzles and challenges you can take part in, such as Facebook Career Puzzles. These puzzles are for people who want to work for facebook, but there is no reason you can't try them even if you aren't interested in a job. They start from very simple, to complex.
Programming Puzzles for Interviews (you could write programs to solve these)
Programming Puzzles hosted by companies like this one are also fun.
I would say create something useful to help yourself, or try tackling some puzzles. In addition to learning new ways to tackle problems, you'll learn the language better.

Anonymous Contributions & Contributors in Open Source Projects [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Having witnessed in various open source projects, in which I have been involved, several more or less significant totally anonymous contributions, I am wondering what could be the possible rationale behind such anonymous contributions?
Occasionally, there are contributors who quite obviously prefer to remain completely anonymous - i.e. by just posting to a mailing list using an obvious nick name for months (whereas everyone else would use their real name), or sometimes even by submitting completely anonymous patches to trackers on sourceforge, where there wasn't even the slightest comment about the origins/authors, usually just a license header or a header stating that the code in question were to be released into the public domain.
Often, the code in question was obviously written by fairly competent programmers/developers or even software engineers, who presumably do code for a living.
I am wondering:
What's the motivation behind such contributions?
Have you previously witnessed such and similar instances in open source projects?
Have you, yourself possibly contributed to an open source project in such a fashion?
If so, why?
Can you provide any other insight into this?
After having read another question here on SO, and also after having read two related discussions (at slashdot and perlmonks) about potential work-contract related issues when contributing to open source projects, I am wondering whether some contributors could possibly prefer to remain completely anonymous due to their contract requirements, in order to avoid potential legal issues.
Thanks
I can think of several reasons:
some people simply value privacy - I know that I usually do not post on most forums with my name - SO is the exception for me (and even here it was only after a couple months);
many programmers work at places where part of the employment agreement is that any code you write (whether on company time or not) belongs to the employer. Whether or not these agreements might apply to the submissions, the programmer may be wanting to avoid 'tainting' the submission or may want to avoid going through the bureaucratic hoops to get permission from the employer;
the submitter may not want to be contacted for support;
the submitter may not be particularly proud of the code (rightly or wrongly);
I own two reasonably popular open source projects. I have accepted such contributions. The rationale is simple. They are using the project and want a problem resolved or feature implements sooner rather than later.
The contribution benefits them!
The most likely reason I can think of is they have some sort of contractual binding preventing them from contributing openly, such as working for a large software corporation that views open source projects as a potential liability. Or they just don't want to be bothered with people asking for more information or more support.