Red Emerald
|
|
January 22, 2012, 09:42:23 PM |
|
Although currently incomplete you can take a look at some of the .cpp source for my upcoming open source project at https://github.com/ciyam/ciyam - bet you've rarely seen code this neatly written (including the copyright comments at the top of each .h, .cpp file). The first file I randomly clicked on was over 4000 lines long, contains no function documentation, huge stretches of if/elseif blocks (not sure if that's avoidable, but it's damn ugly), magic numbers in your switch blocks and huge code duplication. I don't mean to crap on your work, but in any mildly successful software company that wouldn't get through a code review. It wouldn't get past me anyway and I'm not even employed as a software engineer. Wow. I'd forgotten how ugly c++ is. Thanks for the reminder to avoid it for large projects if at all possible.
|
|
|
|
CIYAM
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 23, 2012, 05:03:26 AM |
|
The first file I randomly clicked on was over 4000 lines long, contains no function documentation, huge stretches of if/elseif blocks (not sure if that's avoidable, but it's damn ugly), magic numbers in your switch blocks and huge code duplication.
I don't mean to crap on your work, but in any mildly successful software company that wouldn't get through a code review. It wouldn't get past me anyway and I'm not even employed as a software engineer.
Well at least thanks for taking a look - I think you may not be very familiar with working with generated source code. Such code is (for most users) is not even something you would look at (ever used yacc?). Because the code is generated the "magic numbers" are of zero problem (they will change automatically when regeneration occurs if required). The code is for the most part boilerplate and requires some replication of things in order to support "dynamic dispatch". It is true I don't write a lot of comments as I learned (the hard way) that skillful programmers *read code* rather than comments (which inevitably become misleading as programmers tend to change code without changing comments). Perhaps take a look at the file "ciyam_server.cpp" or "ciyam_client.cpp" to get a better idea of how I write code. In regards to your last statement I did work as a member of the tech team that created on one of the biggest insurance software platforms ever created in Australia (company was called Paxus and eventually become owned by CSC), I also worked for Telstra (an Australian Telco that has thousands of employees) and for a very successful company Hardcat for over 11 years and I have never had any of my software fail to pass code reviews. Cheers, Ian.
|
|
|
|
CIYAM
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 23, 2012, 05:16:57 AM |
|
Also when developing applications using my platform you have *zero* need to be reading or writing source code - that is all done for you. http://www.ciyam.com/videos/User.htmlIf you take a look at this video it shows how a minimal web application with login support is created. Cheers, Ian.
|
|
|
|
BTConomist
|
|
January 23, 2012, 05:44:06 AM |
|
Instead of assigning a budget to the project, let's use this opportunity to establish BTC-denominated prices for various types of skills needed to pull it off successfully. What I'm proposing is to solicit quotes per hour for various tasks (architecture, programming, testing, etc.) rather than quotes per milestone. Doing so would open up the bidding between all kinds of walks of life.
In a way, it will be a test of bitcoin's viability as a medium of exchange, rather than a speculative digital asset (or perishable gold, if you will). Most importantly, as the project begins to take form (one piece at a time), I have no doubt that some BTC miners (not to be confused with the gold-rush miners) would gladly make the necessary donations just to see the project completed. Who knows, this could become the very first open source project where every contributor gets paid in BTC. Think of the hype it may create in the media circles.
What do you say @theymos?
|
Bitcoins are earned, not traded! If you plan on hoarding BTC, you're on my target list. (And yes, it is possible to swim in BTC.) Don't give me that Bull... I'm one of those honey eating Bears that the bees hope to never meet again... Viva la BTC!!!
|
|
|
CIYAM
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 23, 2012, 01:19:37 PM |
|
I have used my software generation system to create a demo prototype for the forum software (it is only a demo so please don't expect it to be feature complete). If anyone is interested in the link to try this system please send me an email (the link will only work when I am online as it is currently running on my laptop). The following are some screenshots from the generated system: Please note that only 1 line of *manual* source code exists in this demo (and it should be gone in the next day). Cheers, Ian.
|
|
|
|
bitplane
|
|
January 24, 2012, 04:09:22 AM |
|
Well at least thanks for taking a look - I think you may not be very familiar with working with generated source code. Such code is (for most users) is not even something you would look at (ever used yacc?). Ah okay, it's fairly neat for auto-generated. Better than most disassembled stuff anyway. It is true I don't write a lot of comments as I learned (the hard way) that skillful programmers *read code* rather than comments (which inevitably become misleading as programmers tend to change code without changing comments). I wasn't talking about comments on individual lines or blocks of code, I actually meant function documentation. I can see that I've irked you though, so I won't offer any more critique as you didn't actually ask for it.
|
|
|
|
CIYAM
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 24, 2012, 04:36:35 AM |
|
Ah okay, it's fairly neat for auto-generated. Better than most disassembled stuff anyway.
Thanks - guess I should have mentioned something about that in the first place. It is true I don't write a lot of comments as I learned (the hard way) that skillful programmers *read code* rather than comments (which inevitably become misleading as programmers tend to change code without changing comments). I wasn't talking about comments on individual lines or blocks of code, I actually meant function documentation. I can see that I've irked you though, so I won't offer any more critique as you didn't actually ask for it. Understand - and no real offense taken (the code review comment did get to me a bit having being a professional software engineer for over 20 years). Documentation for this system is of course essential and something I will be working very hard on in the next few months (its mostly just a bunch of text notes which I have decided are not yet presentable). Cheers, Ian.
|
|
|
|
nhodges
|
|
January 24, 2012, 08:34:51 AM |
|
I think most of this can be built on top of PunBB's existing architecture. It is highly modular, and designed from the ground up to be extensible at almost any portion of its code base. It also supports Postgres out of the box. (You can check out the developer documentation and let me know what you think. Its codebase is also licensed under the GNU General Public License.) Most of the features requested are very straightforward and their needs fulfilled by existing functionality or by the development of custom plugins. The only things that deviate this project from a "standard message board application" are the weighted post / weighted time online and the request for an implementation of a web-of-trust similar to freenet's messaging service / bbs. Both of these are possible, however quoting against those two items without a full spec on what's entailed (more so on the weighted time / post, I don't think I understand what you mean 100%) is difficult. I'm interested in taking on this project but before I give my quote could you expand a little on the weighted time/post item?
|
|
|
|
ZodiacDragon84
Sr. Member
Offline
Activity: 266
Merit: 250
The king and the pawn go in the same box @ endgame
|
|
January 28, 2012, 12:45:08 AM |
|
I was wondering if I could sign on as an alpha or beta tester for whenever a release is scheduled.
|
|
|
|
DourSiezel
Newbie
Offline
Activity: 28
Merit: 0
|
|
January 28, 2012, 12:52:14 AM |
|
What about invision power boards? i wonder what d2jsp uses.
|
|
|
|
|
nhodges
|
|
January 28, 2012, 09:42:18 AM |
|
What about invision power boards? i wonder what d2jsp uses.
d2jsp uses a custom fork of IPB. njaguar himself made most of the modifications.
|
|
|
|
Red Emerald
|
|
January 30, 2012, 06:37:58 PM |
|
Security Use salted multi-iteration hashing for passwords using one of the SHA-2 algorithms. Passwords in the existing SHA-1 format need to be automatically upgraded once the user logs in again.
So while doing some research last night, my partner found http://codahale.com/how-to-safely-store-a-password/I think the article makes a valid point. What do you think, theymos? Maybe bcrypt(SHA-256(password)) if we want to be uber paranoid
|
|
|
|
theymos (OP)
Administrator
Legendary
Offline
Activity: 5404
Merit: 13498
|
|
January 30, 2012, 09:23:48 PM |
|
I prefer traditional iteration-based hashing. Its properties are better-known. I'd probably just use crypt(). (With a modern hash algorithm and many rounds, of course.)
|
1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
|
|
|
BinoX
|
|
February 04, 2012, 03:55:08 PM |
|
I will be submitting a bid next week (11th Feb) if that's not going to be too late. I finally have a break between projects.
This is just so you know that one is coming and don't give up waiting because you think they're all in.
|
|
|
|
stcupp
|
|
February 05, 2012, 06:01:33 AM |
|
The first file I randomly clicked on was over 4000 lines long, contains no function documentation, huge stretches of if/elseif blocks (not sure if that's avoidable, but it's damn ugly), magic numbers in your switch blocks and huge code duplication.
I don't mean to crap on your work, but in any mildly successful software company that wouldn't get through a code review. It wouldn't get past me anyway and I'm not even employed as a software engineer.
Well at least thanks for taking a look - I think you may not be very familiar with working with generated source code. Such code is (for most users) is not even something you would look at (ever used yacc?). Because the code is generated the "magic numbers" are of zero problem (they will change automatically when regeneration occurs if required). The code is for the most part boilerplate and requires some replication of things in order to support "dynamic dispatch". It is true I don't write a lot of comments as I learned (the hard way) that skillful programmers *read code* rather than comments (which inevitably become misleading as programmers tend to change code without changing comments). Perhaps take a look at the file "ciyam_server.cpp" or "ciyam_client.cpp" to get a better idea of how I write code. In regards to your last statement I did work as a member of the tech team that created on one of the biggest insurance software platforms ever created in Australia (company was called Paxus and eventually become owned by CSC), I also worked for Telstra (an Australian Telco that has thousands of employees) and for a very successful company Hardcat for over 11 years and I have never had any of my software fail to pass code reviews. Cheers, Ian. Don't feel bad I never write comments either I do as you said and just read the code
|
|
|
|
CIYAM
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
February 05, 2012, 06:55:59 AM |
|
Don't feel bad I never write comments either I do as you said and just read the code Yes - I learned this the hard way by embarrassing myself in front of a *guru* in my first full time programming position by making an assumption about what the code did from an out of date comment. He was at least kind enough to set me straight - "Ian don't forget that the compiler can't understand the comments". From that day on I learned to "read code" and became a much better programmer because of it. Cheers, Ian.
|
|
|
|
bitplane
|
|
February 06, 2012, 08:27:01 PM |
|
I know that this is getting off-topic, but this really bugs me. Software engineering is more than just writing and debugging code, you need to be able to design systems and document them too. Programming is the easy bit, design and documentation are IMO much harder problems, and if you aren't documenting then you're missing out on valuable experience in your journey as a developer.
Comments can only go out of date if you describe what the software is doing, which isn't the way to write comments. Good inline comments describe the whys and don't go out of date when the how changes, this is exactly what makes them a difficult ordeal because as codemonkeys we're used to dealing with hows without really pondering the whys. Good function comments describe the interface rather than the implementation, if they go out of date then you can almost guarantee that you've introduced bugs because you've broken your interface.
I don't even claim to be good at it myself, but I do practice and try to improve.
|
|
|
|
Red Emerald
|
|
February 06, 2012, 10:40:41 PM |
|
I know that this is getting off-topic, but this really bugs me. Software engineering is more than just writing and debugging code, you need to be able to design systems and document them too. Programming is the easy bit, design and documentation are IMO much harder problems, and if you aren't documenting then you're missing out on valuable experience in your journey as a developer.
Comments can only go out of date if you describe what the software is doing, which isn't the way to write comments. Good inline comments describe the whys and don't go out of date when the how changes, this is exactly what makes them a difficult ordeal because as codemonkeys we're used to dealing with hows without really pondering the whys. Good function comments describe the interface rather than the implementation, if they go out of date then you can almost guarantee that you've introduced bugs because you've broken your interface.
I don't even claim to be good at it myself, but I do practice and try to improve.
Well said. I'm not putting in my bid until basic unit tests and documentation are ready.
|
|
|
|
M4v3R
|
|
February 06, 2012, 10:46:21 PM |
|
What's the status of this? Does anyone actually code something, or are we still waiting for theymos to pick an offer? If yes - is there still time for placing offers?
|
|
|
|
|