Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: Aemon on December 19, 2014, 04:29:19 PM



Title: How does one get started in devlopment for Bitcoin?
Post by: Aemon on December 19, 2014, 04:29:19 PM
Hey all,

How would I go about contributing, helping people for Bitcoin.  I do have a degree in Computer Science I just don't know where to start here at all, if anyone has any advice, guides that would be great!

Thanks!


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: 548845 on December 19, 2014, 06:31:36 PM
Hey all,

How would I go about contributing, helping people for Bitcoin.  I do have a degree in Computer Science I just don't know where to start here at all, if anyone has any advice, guides that would be great!

Thanks!

That depends on what you mean?

Do you mean contributing to the actual Bitcoin Core Software?
If so I cannot help you, I haven't even bothered. Too many developers on it anyway.

If it is contributing in general then ask around in the general discussion forum: what do members want to see that they didn't yet.

I believe that should get you started since many members here have something about Bitcoin they want to see.

In fact, here's one here: https://bitcointalk.org/index.php?topic=899379.0 (https://bitcointalk.org/index.php?topic=899379.0)
(Android)
 
Good luck  ;)


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Aemon on December 19, 2014, 06:51:59 PM
Thanks for the answer, I am just looking to get some practice coding so I can try and one day get a job as a programmer, everywhere I apply I don't get many call returns because everyone wants experience.  Its hard to get experience if no one gives you the chance to get some, so I want to start working on side projects to show them I can code


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: shorena on December 19, 2014, 07:30:26 PM
Thanks for the answer, I am just looking to get some practice coding so I can try and one day get a job as a programmer, everywhere I apply I don't get many call returns because everyone wants experience.  Its hard to get experience if no one gives you the chance to get some, so I want to start working on side projects to show them I can code

Get your fork... https://github.com/bitcoin/bitcoin



Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Buffer Overflow on December 19, 2014, 07:43:00 PM
I guess you should start with the developer guide to familiarise yourself how Bitcoin works.
https://bitcoin.org/en/developer-documentation


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Reynaldo on December 20, 2014, 12:03:44 AM
I guess you should start with the developer guide to familiarise yourself how Bitcoin works.
https://bitcoin.org/en/developer-documentation


Thanks a lot, this is really useful, i was thinking the same question as the OP but regarding mathematics with statistics.


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: cr1776 on December 20, 2014, 01:42:33 AM
Hey all,

How would I go about contributing, helping people for Bitcoin.  I do have a degree in Computer Science I just don't know where to start here at all, if anyone has any advice, guides that would be great!

Thanks!

One thing you might consider is to pick some language you like to use and intend to use (e.g. C, C++, Pascal, Ada, Swift, Smalltalk, php, perl, python, Java, Javascript, Prolog, Lisp, ML or whatever) and do some coding.  Pick a language that you know at least a bit, know the development environment, and have access to.  Some languages might be more of a challenge than others!

Then pick something small to familiarize yourself with how bitcoin works first.

For example, create a private/public pair.   Might be 50-100 lines of code depending on how much you comment it.  You'll learn a lot, and there are examples that you can look at to follow along.  And articles (e.g. http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript).  Then maybe redo it in a more common language if you used something esoteric like ML, Prolog or Lisp.

Then, find another area you can extend it.

Try to avoid using libraries (you may need some, for example an elliptic curve math library might be good).  You will familiarize yourself with some portions of the nuts and bolts if you do a few smaller projects.  Keep an eye on the forums (and join the development list) and see what areas people think need work or improvement.  Look at the BIPs.

You'll figure out what areas are of interest to you, which is important, and what areas you enjoy too!





Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Aemon on December 30, 2014, 01:46:04 PM

One thing you might consider is to pick some language you like to use and intend to use (e.g. C, C++, Pascal, Ada, Swift, Smalltalk, php, perl, python, Java, Javascript, Prolog, Lisp, ML or whatever) and do some coding.  Pick a language that you know at least a bit, know the development environment, and have access to.  Some languages might be more of a challenge than others!

Then pick something small to familiarize yourself with how bitcoin works first.

For example, create a private/public pair.   Might be 50-100 lines of code depending on how much you comment it.  You'll learn a lot, and there are examples that you can look at to follow along.  And articles (e.g. http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript).  Then maybe redo it in a more common language if you used something esoteric like ML, Prolog or Lisp.

Then, find another area you can extend it.

Try to avoid using libraries (you may need some, for example an elliptic curve math library might be good).  You will familiarize yourself with some portions of the nuts and bolts if you do a few smaller projects.  Keep an eye on the forums (and join the development list) and see what areas people think need work or improvement.  Look at the BIPs.

You'll figure out what areas are of interest to you, which is important, and what areas you enjoy too!



Wow, Thanks a lot this is pretty much exactly what I am looking for.  The languages I know are C++, C, Javascript and Java really well, I am learning others but am not 100% confident in them yet.  Thanks again!


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: jonald_fyookball on December 31, 2014, 12:16:18 AM
there is a bug log on the git repo, feel free to start fixin stuff :)


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Fernandez on December 31, 2014, 08:47:30 AM
One thing you can do is fork and create an altcoin. There are lots of altcoin guides around, and it will give you valuable experience.
You can even launch it in altcoin section while making it clear that you're doing it for study purposes.


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: DaNksta on January 02, 2015, 10:15:16 PM
Thanks for the answer, I am just looking to get some practice coding so I can try and one day get a job as a programmer, everywhere I apply I don't get many call returns because everyone wants experience.  Its hard to get experience if no one gives you the chance to get some, so I want to start working on side projects to show them I can code


Lie about your experience and give your friends as refrences and inform them that someone may be calling and tell them who you put them down as.
I've had several friends land really good jobs doing this - they rarely delve deep into your references if you are applying for a starter position at a company. They will call and probably not much more than that... Get the job, work there and get real coding experience at a company, then you can either work your way up or apply for a different/better job once you have some real job experience.

Don't get so discouraged without actually trying. If you really put effort into getting a job and are willing to spin a few small lies (if needed) to make yourself better than the rest of the applicants - so be it..

If being dishonest doesn't suit you then just learn to sell yourself. If I were hiring people - I would hire someone with less experience if he wanted the job more, was more enthusiastic, and promised he would work hard and be grateful for the opportunity over some guy who just needed a job and had a degree. Especially if he came prepared with examples of his work or showed real effort or persistence.

Just a thought. Don't quit before the race starts.


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: ncsupanda on January 02, 2015, 10:50:37 PM
When Gavin did an AMA on Reddit I asked a similar question.

http://www.reddit.com/r/Bitcoin/comments/2jw5pm/im_gavin_andresen_chief_scientist_at_the_bitcoin/clfnp9b?context=3


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Nicolas Dorier on January 03, 2015, 07:15:44 AM
If you are interested in C# https://github.com/NicolasDorier/NBitcoin (https://github.com/NicolasDorier/NBitcoin).
The code is easier to read, and there is not lot of people. This is the smoother way to start contributing I believe.

You can play with some cool stuff with it, take a look to the articles listed in Readme. :)

(And it works on all : Microsoft, Linux and Apple plateform, mobile or not)



Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Aemon on January 03, 2015, 07:35:23 PM
If you are interested in C# https://github.com/NicolasDorier/NBitcoin (https://github.com/NicolasDorier/NBitcoin).
The code is easier to read, and there is not lot of people. This is the smoother way to start contributing I believe.

You can play with some cool stuff with it, take a look to the articles listed in Readme. :)

(And it works on all : Microsoft, Linux and Apple plateform, mobile or not)



Thanks for the response, I will check out the github and look around at the code see if I can contribute to anything and start the learning process!  Thanks!


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: starfeeder on January 05, 2015, 07:54:36 PM
Thanks for the answer, I am just looking to get some practice coding so I can try and one day get a job as a programmer, everywhere I apply I don't get many call returns because everyone wants experience.  Its hard to get experience if no one gives you the chance to get some, so I want to start working on side projects to show them I can code

If you are at that level, I'd say start by making your own website / blog.

As far as Bitcoin goes, the easiest app you can make would be a price ticker, like preev.com or zeroblock. So if I where you, I'd make one of those.

I'm working on a public address watcher which will display total bitcoins in all accounts combined. Next after that is making a web wallet.

Like some others have said, I wouldn't touch Bitcoin core, don't know C anyways, also wouldn't want to mess anything up with the core client. Rather just built apps that connect to the blockchain.

For resources:

Bitcoin
https://bitcoin.org/en/developer-guide#full-service-wallets
http://www.amazon.com/Mastering-Bitcoin-Unlocking-Digital-Cryptocurrencies/dp/1449374042
https://github.com/aantonop/bitcoinbook

For Programming (web):
I like Tuts+ and Codeschool, I'm currently learning the MEAN stack, and there are various videos and tutorials all over the web.



Title: Re: How does one get started in devlopment for Bitcoin?
Post by: jxm262 on January 05, 2015, 09:06:41 PM
@starfeeder

You basically just described the path I'm taking :)  I just started a nodejs project to get the ticker info for a bunch of exchanges.  I'm thinking of expanding this to make 1 huge node.js wrapper library to aggregate all the api's for all the exchanges (or most of them anyways).  

But before that, I thought to start by making the ticker then maybe some website to send email alerts for a given exchange/price.  Maybe add some charting , etc...

Actually, if we're doing similar things, would you ever want to collaborate?  I'm a java dev during the day, but have been trying to get my hands dirty with Node and Scala.



Title: Re: How does one get started in devlopment for Bitcoin?
Post by: acoindr on January 09, 2015, 05:26:06 AM
Hey all,

How would I go about contributing, helping people for Bitcoin.  I do have a degree in Computer Science I just don't know where to start here at all, if anyone has any advice, guides that would be great!

Thanks!

Hey welcome!

We've got many great coders and can always use more. Where to start? That depends. Bitcoin now is like the Internet in the 90s, tons of potential but underdeveloped.

Bitcoin can use it all, but you probably want to stick to what you're most interested in. If you really want to help the core of Bitcoin at a minimum you can run a full node (make sure it's done properly (http://www.reddit.com/r/Bitcoin/comments/2gymf2/im_running_a_full_node_on_my_home_pc/)). However, something Gavin also mentioned (https://www.youtube.com/watch?v=tqlvk51uS1M) is a big need for people to review core code, because people often prefer writing code to reviewing.

If you're more of an app developer then dive into making things which support Bitcoin use cases, which strengthens the community (especially things with an emphasis on security). Like I said, Bitcoin needs it all!

Also, if you want coding experience for later job prospects a great way to go is contributing to open-source projects. You'll find a lot of opportunities for that in this community too.


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: legendster on January 09, 2015, 01:26:14 PM
Thanks for the answer, I am just looking to get some practice coding so I can try and one day get a job as a programmer, everywhere I apply I don't get many call returns because everyone wants experience.  Its hard to get experience if no one gives you the chance to get some, so I want to start working on side projects to show them I can code

Age old dogma of what comes first ? the egg or chicken.

Freshers need to understand that experience doesnt need to be in a company. Build your own calculator, that counts as an experience. Get the meaning ?


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Aemon on January 09, 2015, 02:32:40 PM
Thanks for the answer, I am just looking to get some practice coding so I can try and one day get a job as a programmer, everywhere I apply I don't get many call returns because everyone wants experience.  Its hard to get experience if no one gives you the chance to get some, so I want to start working on side projects to show them I can code

Age old dogma of what comes first ? the egg or chicken.

Freshers need to understand that experience doesnt need to be in a company. Build your own calculator, that counts as an experience. Get the meaning ?

I understand that part, the thing is, I am not going to bring in to a job interview a working calculator, they will look at me like I am crazy.  What they want to see is you actively working with random people on the internet so that you can work and contribute to a team


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: legendster on January 09, 2015, 06:41:44 PM
Thanks for the answer, I am just looking to get some practice coding so I can try and one day get a job as a programmer, everywhere I apply I don't get many call returns because everyone wants experience.  Its hard to get experience if no one gives you the chance to get some, so I want to start working on side projects to show them I can code

Age old dogma of what comes first ? the egg or chicken.

Freshers need to understand that experience doesnt need to be in a company. Build your own calculator, that counts as an experience. Get the meaning ?

I understand that part, the thing is, I am not going to bring in to a job interview a working calculator, they will look at me like I am crazy.  What they want to see is you actively working with random people on the internet so that you can work and contribute to a team

You've got this premade notion of job interviews being something out of Star wars perhaps, lol its not trust me, I have given many interviews scored many ditched many and got rejected by many. Most of the times company wants to know if they are gonna hire a baby who they'd have to babysit all the way through or do they get someone who knows how to get things done without relying on input.


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: meowball on January 09, 2015, 06:47:25 PM
Thanks for the answer, I am just looking to get some practice coding so I can try and one day get a job as a programmer, everywhere I apply I don't get many call returns because everyone wants experience.  Its hard to get experience if no one gives you the chance to get some, so I want to start working on side projects to show them I can code

Age old dogma of what comes first ? the egg or chicken.

Freshers need to understand that experience doesnt need to be in a company. Build your own calculator, that counts as an experience. Get the meaning ?

I understand that part, the thing is, I am not going to bring in to a job interview a working calculator, they will look at me like I am crazy.  What they want to see is you actively working with random people on the internet so that you can work and contribute to a team

You can consider contributing within an altcoin community. There are many opportunities out there!

If you enjoy C++ and the intricacies of making a Qt wallet, then you can be a coin dev. If you enjoy making apps, then you can be a web or mobile dev. I've touched coin development, but I enjoy making apps that brings real use cases to the coin much more. To be an app dev, you would probably need to get familiar with RPC and how that works. There are also tons of libraries in different languages for RPC.

If you are interested in making apps and becoming part of an active altcoin community, you can find many if you browse around. I would recommend HYPER (https://bitcointalk.org/index.php?topic=624651.0)  ;). If you like games, then this would be the community to be at! You can also find open source projects all over the place. For HYPER, I created this github group (https://github.com/hyper-project). There aren't many projects on there yet. They are just open source projects that I have and want to work on. Outside of that, I have a few private repositories where I am working on something called "Hyper Gaming Gateway". More info is in my sig. If you're interested in that, you can PM me!

You are welcome to propose or work on a project anytime you want! If you're like me, you can get intimidated by large open source projects, especially when there isn't sufficient documentation and you don't really know where to get started. Like you, I also have a degree in CS, but I also have a day job. PM if you would like to work together and/or you want to join a coin community with lots of support!


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Aemon on January 09, 2015, 07:16:18 PM
@legend

I guess the thing is I have applied at a few places and I don't even get call backs.  My Resume looks good(My brother is a software engineer that does hiring in a different city, said it looked great)  Every place I have been applying to says things like, Show us your github and open source projects you have worked on.  Well I really haven't worked on any so its hard to start from anywhere, I have my normal job and I am active, its hard to just begin coding on open source stuff I feel when I don't have a lot of time. 

@Meow

I am going to take you up on your offer, pm sent.


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: legendster on January 10, 2015, 03:02:20 PM
@legend

I guess the thing is I have applied at a few places and I don't even get call backs.  My Resume looks good(My brother is a software engineer that does hiring in a different city, said it looked great)  Every place I have been applying to says things like, Show us your github and open source projects you have worked on.  Well I really haven't worked on any so its hard to start from anywhere, I have my normal job and I am active, its hard to just begin coding on open source stuff I feel when I don't have a lot of time. 

@Meow

I am going to take you up on your offer, pm sent.

NEVER, trust family & friend's reviews. If you have a kid, ask him he'll give you the most honest review lol

On a serious note, what do you mean by a normal job ? are you working in softwares or ???

Work on something small, dont aim big, I'd like to interview someone someday soon, and I'd like to hire someone who knows a lot of little things instead of one single thing where he spent half his adult hood. While the later is good but in a competitive market you need to diversify your skill sets. Am I making sense ?


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Muhammed Zakir on January 10, 2015, 03:20:34 PM
Look here : https://bitcoin.org/en/development . You can see some of the great projects which will help you to start development for Bitcoin. Best of luck! :)

@legend

I guess the thing is I have applied at a few places and I don't even get call backs.  My Resume looks good(My brother is a software engineer that does hiring in a different city, said it looked great)  Every place I have been applying to says things like, Show us your github and open source projects you have worked on.  Well I really haven't worked on any so its hard to start from anywhere, I have my normal job and I am active, its hard to just begin coding on open source stuff I feel when I don't have a lot of time. 

@Meow

I am going to take you up on your offer, pm sent.

NEVER, trust family & friend's reviews. If you have a kid, ask him he'll give you the most honest review lol

If you can't even trust your family and friends, who would you trust then? ??? You can't live in this world with motto "TRUST NO ONE". ::)

   ~~MZ~~


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: legendster on January 10, 2015, 04:22:33 PM


If you can't even trust your family and friends, who would you trust then? ??? You can't live in this world with motto "TRUST NO ONE". ::)

   ~~MZ~~

Dont misquote me, your family members will always support you no matter how much you - pardon my language- suck at something. It'll be always 'good' to them.
Dont bring philosophy into psychology.


But if you have to, then I believe this will satisfy you ;

https://i.imgur.com/g5ELn46.jpg

Full quote :

"Do not believe in anything simply because you have heard it. Do not believe in anything simply because it is spoken and rumored by many. Do not believe in anything simply because it is found written in your religious books. Do not believe in anything merely on the authority of your teachers and elders. Do not believe in traditions because they have been handed down for many generations. But after observation and analysis, when you find that anything agrees with reason and is conducive to the good and benefit of one and all, then accept it and live up to it."

--- Buddh

First ones to remind me this on this forum are Benu da and spndr7 https://bitcointalk.org/index.php?topic=217095.0


Title: Re: How does one get started in devlopment for Bitcoin?
Post by: Aemon on January 12, 2015, 04:29:34 PM

NEVER, trust family & friend's reviews. If you have a kid, ask him he'll give you the most honest review lol

On a serious note, what do you mean by a normal job ? are you working in softwares or ???

Work on something small, dont aim big, I'd like to interview someone someday soon, and I'd like to hire someone who knows a lot of little things instead of one single thing where he spent half his adult hood. While the later is good but in a competitive market you need to diversify your skill sets. Am I making sense ?

I will first say, I always trust friends and family.  If they can't tell you the truth then they aren't helping you at all, which is the main point.  My brother interviews people for software development and looks at thousands of Resumes, he isn't go to not make mine good. 

My normal job, is just an IT job, no coding, just mostly help desk and fix it stuff. 

That is what I have been doing, just learning stuff little by little and trying to put something together.