PDA

View Full Version : Programmers Please


Handiman
08-09-2010, 12:23 AM
As most know here I write programs. So I wanted to take a moment and speak to all the other programmers around here.

When I write code, I tend to do it in a linear fashion. Read the data file one horse at a time......and process the specific data needed until all horses are done.

Then with the data suspended waiting for the handicapping process, as race is selected then process, compare, value, manipulate and then print out the display.

So now I ask you am I doing it old fashion? Am I going at it in a less efficient manner than I could be? Am I sacrificing speed and clunking along when there are much better approaches I am not considering or even unaware of now a days?

I'd appreciate any input!

Handi:)

Dave Schwartz
08-09-2010, 03:06 AM
Handi,

Today's "style" of programming is far different than it was years ago. Back then we used a top-down approach. In Windows that often does not work because it is now event-driven rather than menu-driven.

IMHO, it depends upon your perception of importance of several things:

1. Ease of programming.
2. Speed of program.
3. Level of "professionalism" in your software.

Which of the above is most important?

For me, it is 3,2,1. For someone else it might be 2,1,3.

It is logical for software that is built in the "freeware" arena to be 1,2,3. The problem with this is that open source code written with other than 3,2,1 will never stand the test of time. It can't. Because it ultimately becomes spaghetti code.

My best guess is that in about another 6 months you will look at how the project is "getting away from you" a little (or maybe a lot) and you will choose to re-design it from scratch. Of course, the second time you will have a better idea of what you want to accomplish and will organize better.

Personally, I love the idea of open source software for horse racing. Unfortunately, I cannot do it because, ultimately, I must find a way to monetize it.

IMHO, for what you are doing right now, I think you should ask these questions:

1. "Does it work?"
2. "Would it work substantially better if I did it differently?"

If the answers are "yes, no" then keep doing what you are doing. With any other answers, well, you know what you've got to do.


Regards,
Dave Schwartz

MiJan
08-09-2010, 11:01 AM
Personally, I think your linear approach is the best avenue. After all, you are limited by the data files from which you must access the data if using Bris/TM(Equi) files (an assumption on my part).

I don't see that you have any choice but to use a linear data read.

Data manipulation, once the data has been gathered is generally guided by the programmers experience. Even lesser experienced programmers with an 'idea' can create useful applications. If they start out using 'code modules (classes)' even fragmented code can be updated with a minmum of time/effort as the application progresses (inevitable) and their experience/learning increases.

Robert Goren
08-09-2010, 11:15 AM
Aw, I wish I was young enough to get in to computer programing. The puzzles must fascinating.

DeltaLover
08-09-2010, 12:14 PM
In your post you seem concerned if you are following an 'old fashion' approach.... I am not exactly sure about what exactly this means. .

Although it might sound strange, based in my opinion very little has been changed since the introduction of LISP in the late fifties. Software architecture can be seen as a sequence of layers of abstractions that encapsulate implementation details to higher level declarative interfaces thus decoupling the 'what' from the 'how'. Things like object orientation, functional programming, design patterns and artificial intelligence have been around for decades and have not be surpassed so far with anything new. Of course following an evolutionary path, the industry created comprehensive frameworks, enriched imperative languages with declarative expressiveness (for example LINQ in C#), allowed reflection based systems to mature resulting in solutions like Spring and other IoC API's but the truth is that there is nothing revolutionary that separate old from modern fashion, when comes to software design and implementation.

You are also wondering if you can substitute your current process with a more efficient one... What do you mean by more efficient ? Do you refer to performance optimization, code structure and organization or you see it from the front end – UI perspective? The answer to these questions, as Dave in mentioning relies to the mission of your application. A more strategic solution should try to resolve all these issues while a more tactical approach can afford a QD (quick and dirty) resolution as far as we can be certain that its lifespan will be relatively limited.

As far as the open source software for racing, I have to agree with Dave. While it seems like a pretty attractive idea, the nature of the domain by default is based upon secrecy and proprietary solutions that immediately are loosing their effectiveness as soon as they become part of the public domain thus making them a no candidate for the OS community. Besides that, it is possible that there can be certain sectors of the related software that can eventually become OS as long as they do not deal with betting strategies and AI and remain limited to the informational end, like file parsers and loaders, past performance UI's etc. That's something I've been thinking for a while, but I don't really know how big will the interest and the support of the community in such an approach.

Dave Schwartz
08-09-2010, 12:42 PM
Although it might sound strange, based in my opinion very little has been changed since the introduction of LISP in the late fifties.

Delta Lover,

Really? You don't think that the shift to event-driven programming qualifies as a significant change?


Dave

DeltaLover
08-09-2010, 01:22 PM
Event driven programming paradigm as it was popularized with Windows based development in the early nineties was nothing conceptually new.

We had been using similar approaches even in very early MS-DOS –based applications using interrupts while UNIX was solving the same problems using its signal – based architecture.


Just going through an early plain C based implementation of a Windows application (in our days known as Petzhold program, from the legendary author of Programming Windows books) will convince us that the event model (upon which windows is based) is expressed using the very basic approach of call back handlers build on top of an OS abstraction that is contained in the system provided libraries.


That’s not to say that we have not experience an evolutionary path when it comes to software development but the truth is that SD has not seen a revolution for very long time. From the coder side of view, I dare to say that today’s programming environments, focusing to browser based clients have more similarities with very early approaches like old character based UI’s than their more recent ancestors (COM/DCOM, MFC, WinForms). Delving in to frameworks like ASP.NET MVC and JQuery for example, will convince us that the advantages of strongly typed, OO languages under homogeneous development environments are sacrificed in the attempt to simulate a desktop behavior to browser based applications.

Dave Schwartz
08-09-2010, 01:49 PM
Delta,

Wow! I haven't heard anyone talk like that since my early days of programming (1970s). I obviously underestimated your level of programming experience. And program-speak. LOL

I completely understand what you are saying and, for true professional-level programmers who have been around for (say) the last 25-40 years of the last millennium I agree with you. That would be especially true of anyone who worked with UNIX-based applications or the UNIX OS itself, which is, of course, about as event driven as you can get.

However, I assumed (and possibly incorrectly) that the programming question he asked was for people who have been programming in various dialects of BASIC.

I found that the transition from DOS to Windows programming was much easier than I expected. Of course, it helped that I had been working in a language where the entire process occurs within a giant event-loop (kind of UNIX-like).


So, what is your suggestion to Handi?

DeltaLover
08-09-2010, 02:46 PM
Based in the high level description that Handi is giving us:

When I write code, I tend to do it in a linear fashion. Read the data file one horse at a time......and process the specific data needed until all horses are done.

Then with the data suspended waiting for the handicapping process, as race is selected then process, compare, value, manipulate and then print out the display.


The process looks straight forward and as MiJan noted there is not any reason to add a level a complexity trying to convert the data read from a linear to a concurrent solution.

Of course there might be room for improvement in the implementation of this process which should minimize platform (for example data base) and data provider (for example bris) dependencies, hiding all the related details in lower level constructs (for example using the notorious piml idiom) decoupling client dependencies achieving back end neutrality.

For this purpose I have to suggest an approach using a combination of the Façade and the Envelope Letter patterns which in the long run will show their value as the platform will be maturing adding functionality and component connectivity.

Frequent code refactoring is another very interesting topic that should be applied regularly both to the interfaces and the lower level detail handling chunks of code.

I would suggest a test – driven development process that will make testing every class to be tested individually. In most of the cases (except very trivial solutions) relatively inexperienced developers tend to build systems that comprise of non self testable components that make maintenance and additions a pretty daunting task as cross – component dependencies are growing in an exponential rate, to a point that the only way to test the application is by a full blown run with all the disadvantages that come with it.
The data processing and visualization layer as described by Handi, again look pretty simple (at least from a high level perspective) although again the logical entities should be designed with encapsulation and detail abstraction in mind focusing for code reuse when possible.


The development platform and the language are very critical and can influence or even dictate design and implementation decisions. The sad truth is that languages that belong in the Basic family although might look easier or faster to learn are inferior to languages like C#, C++, Java, Python etc so learning one of them might be proven the best starting point towards writing better software.

If Handi is serious about developing software I have to suggest to him to learn in top of one of the previously listed languages, a language like Scheme or LISP (both of them over 40 years old but still considered to be unmatched from any contemporary rival!) that certainly will change the way he perceives programming forever!

my_nameaintearl
08-09-2010, 02:48 PM
Programming now is all about Object Oriented.

Maybe what you want look at now is the use of threads in java.

Ive been working on a program for someone on this board for a short period of time. Ive been experimenting with it by the use of pipes in C, but since I dont have nearly enough time on my hands as i used too i scrapped that and began the program from scratch in a linear form similar to how you explained.

DJofSD
08-09-2010, 02:51 PM
The only instance I am aware of where the the OS is not interrupt driven is the old CDC Network Operating System (NOS). Everything else has always been interrupt driven.

DJofSD
08-09-2010, 02:57 PM
Pipes is/are still linear.

OOD/P is mostly about maintenance and reusability. Yes, of coarse, there is a whole heckava lot more to OO than that but as far as the issue of linear programming methods and procedures, I don't think the other aspects of OO apply.

my_nameaintearl
08-09-2010, 03:30 PM
Pipes is/are still linear.

OOD/P is mostly about maintenance and reusability. Yes, of coarse, there is a whole heckava lot more to OO than that but as far as the issue of linear programming methods and procedures, I don't think the other aspects of OO apply.


I never claimed pipes were not linear. He brought up speed and efficiency IPC can be an advantage when looking for that.

When you look at horse racing you see objects. The horse is an object the track is an object. Each of them have properties that effect the outcome of a race.

Id like to see a few people come together and work on a web based handicapping applet, but time gets in the way of a lot of great ideas.

Handiman
08-09-2010, 04:19 PM
The input has been just what I was looking for from this community. Albeit actually touched on in a minimalist fashion, as far a depth of discussion goes. Any deeper though and you'd be leaving me behind.

Alluding to the adding of code and testing is exactly one area that presents a problem when following a strictly linear approach. Modularity in design is more of what I'd like to do, but being limited by health issues and lack of total dedication, with FUN being a necessary component of anything I do at my age, I haven't found a path to follow just yet.

I wanted to make sure I wasn't sitting in the dark ages and that something new I hadn't ever heard of had popped onto the scene. If one glosses over the design process and jumps in with both feet, you, as mentioned earlier, inevitably end up with spaghetti code. Which leads to an untold amount of loose ends which are nearly impossible to tie up.

So thanks to all of you who have responded. I sincerely appreciate your input!

Handi:)

Mike at A+
08-09-2010, 05:24 PM
I use an ancient language devised back in the 1960's called APL which literally means "A Programming Language". It is a very mathematical and conceptual language with its own character set. Today, people called it "Array Programming Language" because of its strength in processing arrays of data (vectors and matrices) without having to loop. If A = 1 2 3 4 5 and B = 1 0 1 0 1, to multiply corresponding elements of A and B one would simply code AxB and end up with 1 0 3 0 5. The language is extremely terse (and powerful) resulting in a lot less code. It is an interpreted language as opposed to a compiled one. For these reasons (and getting back to the original question), I read the entire data file (usually comma delimited) into a variable and use idioms (short utility functions) to reallign the data into one big matrix (one row for each horse and one column for each data item). From that point on, my algorithms run smoothly with minimal code. The APL I learned on back in the 1970's was time sharing and eventually I got into mainframe APL (IBM and IP Sharp). Around 1988, I got into the DOS version and ultimately the Windows platform which has all the bells and whistles that you find in the Visual programs. Like others here have said, Windows is "event driven" meaning the user clicks on a button to initiate a process and the program runs to the point where more user actions are prompted for usually with buttons, lists, radio buttons, check boxes etc.

DJofSD
08-09-2010, 05:44 PM
And as what little I ever knew about APL fades further into the ancient past, what I still remember about it was it can be harder than blazes to debug logic errors. Ugg.

Mike at A+
08-09-2010, 06:01 PM
And as what little I ever knew about APL fades further into the ancient past, what I still remember about it was it can be harder than blazes to debug logic errors. Ugg.
Actually debugging is easy because you can put a stop on code lines and "poke around" and see the variables change line by line. Back in the old days it was a lot harder. It's come a long way over the years as the companies that support it have been extremely dedicated.

DJofSD
08-09-2010, 09:21 PM
Actually debugging is easy because you can put a stop on code lines and "poke around" and see the variables change line by line. Back in the old days it was a lot harder. It's come a long way over the years as the companies that support it have been extremely dedicated.
Thanks, I guess I've dated myself. :blush:

WeirdWilly
08-09-2010, 11:15 PM
Aw, I wish I was young enough to get in to computer programing. The puzzles must fascinating.

There's an age limit?

Zoinks! I'm pushing 50 here. Will Visual Studio be erased from my system on my 50th birthday?

As for Handiman - like others have said, go with what works for you. But if it is something you plan on sharing with others - current version OOD/P rocks!

Indulto
08-10-2010, 01:34 AM
While the concepts haven’t changed much, the way programmers communicate with each other and the buzzwords they use have. The standardization of data names/formats, user interfaces, utility functions, and even models of behavior have reduced development costs and made possible programs that develop programs. Still getting below levels of abstraction to bit-twiddling specifics is often necessary to achieve performance objectives.

The difference between professional programming and recreational programming is the quality of communication associated with the production – both to oneself and others. The specific tools employed is not as important a factor as the straightforwardness, clarity, completeness, and currency of the related documentation at all stages. It is the key to managing complexity and minimizing the waste of one’s time. Not everyone can function in a "team environment." I suspect that may be especially true of horseplaying programmers. ;)

KingChas
08-10-2010, 01:51 AM
Aw, I wish I was young enough to get in to computer programing. The puzzles must fascinating.

Me too.
I am really interested in this,writing my own program.
But the replies blow me away. :confused:
Is there any book out there that helped you gentlemen get started?
That is written in beginners layman terms?
I actually programed my figs with my Commodore 128,but it still was with a lot of handtyped input info.
Since the invention of Windows I have been lost.
I can program with excel,but same problem as Commodore,lot of hand typed info that I can actually do quicker with pen and pencil and just insert into my printout.
My printout set up is fabulous it's the work getting there.
Any help would be appreciated.
I want to do this on my own.
Thanks...............KC

Dave Schwartz
08-10-2010, 02:59 AM
While the concepts haven’t changed much, the way programmers communicate with each other and the buzzwords they use have. The standardization of data names/formats, user interfaces, utility functions, and even models of behavior have reduced development costs and made possible programs that develop programs.

Indulto,

Where do you get this stuff?

Lower development costs? Are you kidding? Do you know that it takes 3-5 times longer to write a program in Windows than it did in DOS? There are so many more things to manage that did not have to be managed before. In the DOS days there was no "mouse up, mouse down, click, double-click," and lots more.

When I wrote my original ThoroBrain neural network program in 1990, I wrote it in about 6 weeks and spent another month debugging and improving performance. The first version of HSH was 11 months in the making!

The languages themselves are much more complex. In 1981 I taught a 6-week course in BASIC programming. 42 hours of class time from start to finish. At that time there were under 200 reserved words (i.e. commands) in the language. Think of it as a spoken language with only 200 words. How tough could it really be? You must get the syntax right but the language told you when and where you made a mistake.

Today's languages have literally thousands of reserved words because there are way more things to issue commands to and properties to set.


Programs that develop programs? People have been talking about this for decades yet it is no where near being ready for prime time. While there are certainly wizard-type functions (often macro-based) that allow you to set a few parameters and output code sections or snippets, there are no programs that take commands and spit out finished software.

The closest you get is the 4GL (fourth generation languages), which (generally) allows you to define data files (a data dictionary) and from that dictionary generate a program that gives you the general functions necessary:

browse a file
add-edit-delete records
print standard reports
display records

This is commonly referred to as the browse-form paradigm.

(HSH is built in a 4GL.)

As one of our erudite programmers spoke of, Lisp (which I have not used in almost 20 years) is a good example of a 5GL. A 5th generation language is about as close as one can currently get to a "program-that-writes-programs. " It falls far short of what we are talking about producing in this thread.


Application to Horse Racing
Horse racing is perfect for a 4GL. And there are a bunch of them out there. Frankly, it is kind of surprising to me that Microsoft does not really have a true 4GL. I figured they would have purchased Delphi or Clarion long ago.

(Note: Delphi is almost a 4GL based upon "object Pascal," a really nice language, similar to BASIC, and kind of like a readable C. I have not used it since version 3 and I'd guess they are at like v10 or something now.)


If you are a beginning programmer, a 4GL is a great place to start because the language does so much for you. However, you are not looking at small startup costs. You are also not looking at small annual costs. (I believe that the current version of my language of choice is about $1,200, plus about $200 per year for upgrades.) My particular installation also has about $2k worth of add-ons, several of which come upgrade costs from time to time.)

This is why so many people simply use Visual Basic or one of the other low-cost tools.

There are other alternatives, of course. And many of those alternatives are open source/free. Many of those languages are extremely powerful but few are as user-friendly as VB. I cannot recommend any from experience, but I am sure that plenty of the programmers are knowledgeable enough to do so.

Personally, were I not in commercial software, I would dump Windows altogether and move to one of the Linux platforms and never purchase another piece of software.


This is, of course, all just my opinion, but I am not without some knowledge in this arena.


Regards,
Dave Schwartz

Actor
08-10-2010, 03:50 AM
The development platform and the language are very critical and can influence or even dictate design and implementation decisions. The sad truth is that languages that belong in the Basic family although might look easier or faster to learn are inferior to languages like C#, C++, Java, Python etc so learning one of them might be proven the best starting point towards writing better software.

If Handi is serious about developing software I have to suggest to him to learn in top of one of the previously listed languages, a language like Scheme or LISP (both of them over 40 years old but still considered to be unmatched from any contemporary rival!) that certainly will change the way he perceives programming forever!

I use FORTRAN, after 53 years still the king of the number crunchers.

Actor
08-10-2010, 04:13 AM
Handi,

Today's "style" of programming is far different than it was years ago. Back then we used a top-down approach. In Windows that often does not work because it is now event-driven rather than menu-driven.Top down is still an excellent development strategy. An event-driven paradigm does not change that.

IMHO, it depends upon your perception of importance of several things:

1. Ease of programming.
2. Speed of program.
3. Level of "professionalism" in your software.

Which of the above is most important?

For me, it is 3,2,1. For someone else it might be 2,1,3.

It is logical for software that is built in the "freeware" arena to be 1,2,3. The problem with this is that open source code written with other than 3,2,1 will never stand the test of time. It can't. Because it ultimately becomes spaghetti code.3. "Professionalism" is as vague a term as any. How do you define it? Just make sure your user interface is friendly. Other than that don't worry about it unless you plan to market your program.

2. Speed is inconsequential in handicapping software. At 1 Gigahertz all my programs run to completion in only a few seconds. In all of my programming career I've seldom given any thought to speed. (the machines seemed lightning fast in 1975 and just kept getting faster.) Correctness has always been my goal. A program that gives a correct answer in 2 hours is superior to one that gives a wrong answer in half a millisecond.

1. Ease of programming is most important provided that "ease of programming" means paying attention to style, readability and structure.

Dave Schwartz
08-10-2010, 04:25 AM
You do tend towards absolute pronouncements, don't you?


So, you are a 1,2,3 guy. Good for you. Doesn't make your approach correct any more than mine is correct or incorrect for everyone.

"Professionalism" is certainly vague. But each of us can have their own definition. That is, we program to our own standards. The point is to have standards.

IMHO, if one builds open source software (as Handi is doing), it needs some "standards," else the users will get easily confused.

If I made a priority for Handi, it would probably be 1,3,2 because, as you said, speed is not a problem. On the other hand, if, down the road, he decides to add some database and querying, speed may become more important.

Oh, and speed of querying IS ABSOLUTELY important.


Dave

hcap
08-10-2010, 06:16 AM
Me too.
I am really interested in this,writing my own program.
But the replies blow me away. :confused:
Is there any book out there that helped you gentlemen get started?
That is written in beginners layman terms?
I actually programed my figs with my Commodore 128,but it still was with a lot of handtyped input info.
Since the invention of Windows I have been lost.
I can program with excel,but same problem as Commodore,lot of hand typed info that I can actually do quicker with pen and pencil and just insert into my printout.
My printout set up is fabulous it's the work getting there.
Any help would be appreciated.
I want to do this on my own.
Thanks...............KCBeing a recreational programmer only, I started with the goal of winning races. I took what I considered at the time the shortest path. I f I were younger I would have gone back to school and taken a more formal approach.

Instead I found spreadsheets, Excel specifically easy to learn, although I did start out with the old menu driven code of Lotus 123. VBA,the programming language built into Excel, a variation on visual basic, suits most of my needs. Combined with the other features in Excel I am able to open data files, build databases and do extensive mathematical calcs. Not truly a programming language/platform like some have mentioned here, but allows me to test whatever I can dream up.

Indulto
08-10-2010, 07:28 AM
Indulto,

Where do you get this stuff?DS,
You need to get out more. ;)Lower development costs? Are you kidding? Do you know that it takes 3-5 times longer to write a program in Windows than it did in DOS? There are so many more things to manage that did not have to be managed before. In the DOS days there was no "mouse up, mouse down, click, double-click," and lots more.

When I wrote my original ThoroBrain neural network program in 1990, I wrote it in about 6 weeks and spent another month debugging and improving performance. The first version of HSH was 11 months in the making!Would it be fair to say that HSH was a more ambitious and complicated than ThoroBrain? Were you -- at the time you started HSH -- as accomplished a creator of Windows applications as you were DOS applications or did you have a learnibg curve to deal with? Did you already have a toolbox of utility functions you had already programmed and fully tested that could be re-used in HSH?

Also, when “professional” application developers are also users of the systems they develop, it seems they encounter more “opportunities” for continual refinements as they go along.The languages themselves are much more complex. In 1981 I taught a 6-week course in BASIC programming. 42 hours of class time from start to finish. At that time there were under 200 reserved words (i.e. commands) in the language. Think of it as a spoken language with only 200 words. How tough could it really be? You must get the syntax right but the language told you when and where you made a mistake.

Today's languages have literally thousands of reserved words because there are way more things to issue commands to and properties to set.

Programs that develop programs? People have been talking about this for decades yet it is no where near being ready for prime time. While there are certainly wizard-type functions (often macro-based) that allow you to set a few parameters and output code sections or snippets, there are no programs that take commands and spit out finished software.A colleague of mine creates custom catalogue display/order entry web applications for small businesses. Each new application takes him only a fraction of the time of the previous one. Most of his additional billing is for time spent on how the screens look rather than what the application does. He has developed code to regenerate the application using different-sized product/option description/illustration combinations. When his web applications (which are also used in-house by client employees) are compared with the networked PC applications they replaced, the former are much more powerful, secure, flexible, and extendible than the latter at a fraction of the cost.

science-Fiction like the book, "P1," is still that, but AI labs at universities are making progress.There are only so many functions,processes, and behaviors to identify and inventory.The closest you get is the 4GL (fourth generation languages), which (generally) allows you to define data files (a data dictionary) and from that dictionary generate a program that gives you the general functions necessary:

browse a file
add-edit-delete records
print standard reports
display records

This is commonly referred to as the browse-form paradigm.

(HSH is built in a 4GL.)

As one of our erudite programmers spoke of, Lisp (which I have not used in almost 20 years) is a good example of a 5GL. A 5th generation language is about as close as one can currently get to a "program-that-writes-programs. " It falls far short of what we are talking about producing in this thread.

Application to Horse Racing
Horse racing is perfect for a 4GL. And there are a bunch of them out there. Frankly, it is kind of surprising to me that Microsoft does not really have a true 4GL. I figured they would have purchased Delphi or Clarion long ago.

(Note: Delphi is almost a 4GL based upon "object Pascal," a really nice language, similar to BASIC, and kind of like a readable C. I have not used it since version 3 and I'd guess they are at like v10 or something now.)

If you are a beginning programmer, a 4GL is a great place to start because the language does so much for you. However, you are not looking at small startup costs. You are also not looking at small annual costs. (I believe that the current version of my language of choice is about $1,200, plus about $200 per year for upgrades.) My particular installation also has about $2k worth of add-ons, several of which come upgrade costs from time to time.)

This is why so many people simply use Visual Basic or one of the other low-cost tools.

There are other alternatives, of course. And many of those alternatives are open source/free. Many of those languages are extremely powerful but few are as user-friendly as VB. I cannot recommend any from experience, but I am sure that plenty of the programmers are knowledgeable enough to do so.

Personally, were I not in commercial software, I would dump Windows altogether and move to one of the Linux platforms and never purchase another piece of software.Sounds like you're not inclined to build on the work of others; even professionals.:D This is, of course, all just my opinion, but I am not without some knowledge in this arena. ...Thanks for sharing your thoughts. One should be careful that too much knowledge doesn't inhibit creativity that results from curiosity and experimrntation, but it certainly never hurts to know exactly WHAT one wants to do before one tries to figure out HOW to do it. :lol:

DJofSD
08-10-2010, 08:13 AM
Wow, another thread that has deteriotated to the level of religious wars.

DeltaLover
08-10-2010, 11:03 AM
KingChas said:

Is there any book out there that helped you gentlemen get started?

I would strongly suggest the following book as one of the best introductions to programming:
http://mitpress.mit.edu/sicp/full-text/book/book.html

You can also find it in pdf format here:
http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBMQFjAA&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2 Fdownload%3Fdoi%3D10.1.1.98.7506%26rep%3Drep1%26ty pe%3Dpdf&rct=j&q=structure%20and%20interpretation%20of%20computer %20programs%20pdf&ei=vGZhTObUK4G0lQfZh8G_Cw&usg=AFQjCNHiIirQWd2CnTnNEZc6YOzqJ_a89A&sig2=PqtZw-KDCSYGIr07SarVEg&cad=rja

Here you can find an IDE that you can use with the book:
http://racket-lang.org/

I would also suggest learning emacs as your editor:

http://ftp.gnu.org/gnu/emacs/windows/
http://www.gnu.org/software/emacs/manual/emacs.pdf

I can also suggest using Python as your primary language for DB access, User Interfaces, file parsing, genetic programming etc.

When it comes to Excel or even better OpenOffice Calc, although they both are great research tools that can be very helpful for data mining and testing but they should not be overused as usually is the case, in an attempt to actually replace functionality that should be implemented using a more advanced programming environment.

KingChas
08-10-2010, 12:16 PM
Thank you for the links,DeltaLover. :ThmbUp:

DeltaLover
08-10-2010, 12:31 PM
np

Boats
08-10-2010, 01:17 PM
Lower development costs? Are you kidding? Do you know that it takes 3-5 times longer to write a program in Windows than it did in DOS? There are so many more things to manage that did not have to be managed before. In the DOS days there was no "mouse up, mouse down, click, double-click," and lots more.
Dave Schwartz

Dave, I really have to disagree with you. Once you get the hang of .net development it is much faster. The user interface is a piece of cake. You can spend 99% of your programming time on the guts of the program. I'm not talking about visual basic 6, but Visual studio. I will admit that it may take a long time to get up to speed with visual studio.

Dave Schwartz
08-10-2010, 01:50 PM
Boats,

How long have you been programming?

All I can tell you is that all the programmers I know recognize that it takes significantly longer to write software today than it did before Windows.


Guys, this is not worth an argument. Everyone is entitled to an opinion.


Dave

DeltaLover
08-10-2010, 02:12 PM
Visual Studio with resharper certainly allows the developer to go very fast. Especially large scale projects are benefited the most out of this combination, no doubt.

I also have to note that in the old times, when we were developing for DOS, we had to hand craft (at least at the very early periods) pretty much everything that today is part of the platform: I still remember the first User Interface Toolkit I had written in Turbo Pascal 3.0 (!) containing pull down menus, windowing system, custom clipboard handlers, grid list combo controls etc… Today’s landscape is pretty different, as young programmers looks more like assembly line workers glue together prefabricated components with an attitude towards programming diametrically different to the hacker’s mentality of the ‘80s.

The evolution of software to a consuming good, gave birth to platforms like Java or C#, that although developed by very smart people do not really target equally smart audience, imposing limitation and standards that serve as the less common denominator in their attempt to minimize the probability of a developer’s error….

Overall I believe that the average development time has been decreased since the old times although much of this decrease can be credited to the far more comprehensive frameworks and APIs and to sophisticated tools like resharper, XSPY etc

Dave Schwartz
08-10-2010, 03:07 PM
I posted this question on comp.lang.clarion (the SV-hosted one, not the web-based one.)

Here is a question for people who were programming back in the DOS days.

"Does it take less time or more time for a non-Clarion programmer to write
professional-grade software today?"

Thus far, here are the responses:

1.
Definitely more time as MUCH more is expected from the average user now.

2.
From scratch? Definitely more. Current OOP environments eat up enormous amounts of time on the front end. Long term, for those apps that have a significant life span and significant changes over that life span, it may even out toward the end.

3.
Way more time today because you are comparing DOS to Windows. As a DOS programmer you had control of everything the user did. As a Windows programmer you must react to everthing the user does. You went from proactive to reactive programming, much more effort and requires an understanding of Windows OS where you had no worries with DOS. Also, with DOS you didn't need all of the eye candy required for a "professional-grade" program.


So, while you guys have your opinions, I guess me and my peeps will stick with ours.


Dave

W2G
08-10-2010, 03:33 PM
I'm curious, does anyone use R? I've just a little exposure but plan to learn it. It is all the rage in statistical programming circles. You can't beat the price, $0.

http://www.r-project.org/

DeltaLover
08-10-2010, 03:42 PM
To be honest I know very-very little things about Clarion, so when it comes to it I have to take your opinion.

In general though I really cannot see how DOS development could have been faster that a similar quality Windows application!

The level of abstraction of today’s frameworks is such that a pretty large amount of implementation details are encapsulated in them allowing the developer to certainly produce more.

Let’s take as an example a simple client server application that is retrieving
data from Sybase.

In a DOS based implementation we have to use a low level API, probably Open Client resulting to a pretty imperative code where we have to interact with the db in a very detailed manner, sending SQL statements one by one and iterating data cursors ‘by hand’ while creating our data collections.
Now compare this with LINQ to SQL for example. In this case it is a matter of a simple sequence of clicks to create automatically all the code needed for data retrieval and modification. Right there you already saved one day’s worth of work.

The fact is that modern languages have evolved to more comprehensive and mature levels, improving both their expressiveness and primitive constructs and this is reflected in development time. Take for example the simplicity of a C# generics or C++ templates that allow complicated data structures like hash tables and linked lists to be accessible to the developer through a pretty high level interface that is hiding all the dirty details that we had to hand code back in the DOS days!

As far as R goes I have never used it before but had several QUANTS friends who were using it for statistical and were enthusiastic about it....

Dave Schwartz
08-10-2010, 03:49 PM
Here's another.


In DOS programs your input started from the first field to the next and so
on.

You could count on forcing valid input before proceeding further.
You could use previous fields to calculate or conditionally modify the later
steps.
Then, it took about 1/10th of the time to produce simpler programs that ran
10x faster.

At some time you might run into memory limits that prevented complexity and encouraged lean design. The limits took time and effort to overcome.

Real data input clerks love DOS or Mainframe programs and hate Windows.
Just watch a Clarion DOS program user enter ten records without once looking at the screen.


This is all from full-time, professional programmers - some I have known for almost 20 years. I have to say that other than on this website I have never met a programmer that said development has gotten faster.


But, again, I say that it is different opinions that make the world go around.

BTW, I made a mistake. I posted this in the "chat section" rather than the comp.lang.clarion section.

DeltaLover
08-10-2010, 04:11 PM
Real data input clerks love DOS or Mainframe programs and hate Windows.

Agree 100%... Things are getting worse when it comes to Web Forms where data validation relies in AJAX and the UI goes through multiple levels of implementation, using multiple languages (HTML, JavaScript, CSS, C# and SQL to name a few!) and frameworks.

In DOS programs your input started from the first field to the next and so
on.

You could count on forcing valid input before proceeding further.
You could use previous fields to calculate or conditionally modify the later
steps.
Then, it took about 1/10th of the time to produce simpler programs that ran
10x faster.


I have to say here, that if by DOS programs we refer strictly to them using the standard input / output, we can still develop them today resulting to the same metrics, but my assumption was that we were talking about programs with some sort of a User Interface (character based in DOS and graphical in Windows)…

Jeff P
08-10-2010, 04:41 PM
One of the things I picked up along the way from having worked as a developer in a production environment (where my team created several software projects for Fortune 500 companies) is understanding the importance of design work before actual coding starts.

From a very high level (the view of the landscape from 50,000 ft) the following link points out the most basic of objectives you should be shooting for during the design phase:
http://en.wikipedia.org/wiki/Software_design_document

From my experience, if you turn developers loose on a project without first having done due diligence when it comes to design work - you can expect less than stellar results from the finished product.

This is true no matter what the programming language/dev environment... and true even if the developers turned loose on the project happen to be genuinely talented.

Handi, from your initial post at the top of this thread it sounds like you're asking for a little advice. If that's the case, my recommendation would be to ask a few questions before starting work on any software project:

Q. How do I want the finished product's UI to behave (and what do I want it to look like?)

Q. What should the finished product's database structure look like?

Q. How should the finished product's file handling procedures be structured?

Q. How should the finished product's number crunching procedures be structured? (And in what order should they be called?) (And can they be designed in a way to cut down on recursion and loss of speed? [This is especially important in BASIC environments.])


The idea being:

Better to to have a clear vision of where you are going beforehand than a rough idea and make up for it by going b*lls to the wall in an effort to get there.

FWIW, my 2 1/2 cents,



-jp

.

Boats
08-10-2010, 05:39 PM
Boats,

How long have you been programming?

Dave

Since 1962. OK I'm 81 and still going strong.
I know this is about as futile as arguing politics on this forum. I've programed in about every language invented. Take a look at one program I wrote to demonstrate a very complicated conversion routine. This interface could be done in less than a day. DOS a week.

http://wefald.com/vstrs2ll.html (http://wefald.com/vstrs2ll.html)

Have you used visual studio?

Actor
08-10-2010, 06:20 PM
IMHO, if one builds open source software (as Handi is doing), ...How do you know Handi is building open source? That doesn't seem to be in any of his posts.

sjk
08-10-2010, 07:13 PM
Getting back to the original question I approached things from the charts rather than from pps. The benefit of using charts as the building block is that you can make your own figures and you have access to information that is not in the pps. The downside is that a user must be willing to invest the time and money in maintaining a complete database.

So the information flow is to download the charts, number crunch the data within, download entries for days you wish to handicap, then get the pp information from the database and let the program handicap.

Dave Schwartz
08-10-2010, 07:34 PM
Boats,

81! Good for you! You've certainly seen it all.

Have you used visual studio?

Yes. However, I am actually waiting for the next incarnation of my (now) "native" language as it supports .net.

Once you start using a 4GL - even with the potential problems of dealing with a small company, it is very difficult to go back to writing code under those buttons.

The app you showed is a perfect example of using a tool that is a complete solution. And I agree that for many apps this is fine.

However, I am sure that you will agree that there are no APIs, no "import BRIS single-file-format controls, like there are for so many other industry apps.

If one wants to build a jack-of-all-trades piece of software that is easy. "I want a video player." No problem. Drop a control and you've got a video player.

You want a mapping program? Use the Google Maps API.

All that is easy.

But if you want something for horse racing, you write it from scratch.


BTW, my current software project is for a live horse racing TV show. Very interesting stuff. And there are no API or controls to do 95% of it.


Dave

PS: I always get Handi & Doug mixed up. One is doing the open source thing. I thought it was Handi, but now I am not sure.

Dave Schwartz
08-10-2010, 07:37 PM
I just thought of a point we can probably agree upon. Try this statement:

The closer an application gets to being "main stream," the less actual programming (i.e. hand coding) one must do. As the application gets more obscure (like horse racing) the hand coding goes up.



What do you think?

raybo
08-10-2010, 11:52 PM
I just thought of a point we can probably agree upon. Try this statement:




What do you think?

Although I'm not a "programmer", in the common usage of the word, I think I understand what Dave is getting at, and, I agree. Handicapping, etc., is definitely a different animal.
As an Excel spreadsheet creator, I am very glad that I didn't get started with spreadsheets in a "mainstream" application environment. I started with spreadsheets, with handicapping in mind, and therefore, didn't have to "forget" or "rewire" mainstream fundamentals, everything I do in Excel is fundamental to my experiences in handicapping, and, nothing else. No excess baggage, my mind has plenty of "room" for experimentation and innovation, in my chosen environment.

my_nameaintearl
08-11-2010, 10:54 AM
I'm curious, does anyone use R? I've just a little exposure but plan to learn it. It is all the rage in statistical programming circles. You can't beat the price, $0.

http://www.r-project.org/


a grad student i went to school with did her thesis dealing with R programming, but aside from that havent seen much

vegasone
08-11-2010, 04:25 PM
Interesting conversation.

There is no way that writing the same exact program today is not a whole lot easier than it was writing it in Radio Shack Basic, Apple II basic or just DOS Qbasic or Quick Basic.

On the other hand programs today are expected to have fancy bells and whistles that would not have been possible waaaaaay back then so yes writing programs today may be more complicated or intensive. The tools available today make it easier to concentrate on the logic of the program and less on the interface and minute details.

So just compare apples to apples.

DeltaLover
08-11-2010, 06:10 PM
The closer an application gets to being "main stream," the less actual programming (i.e. hand coding) one must do. As the application gets more obscure (like horse racing) the hand coding goes up.


No doubt!

Things that can easily be modeled and implemented using some RAD tool (like a client-server desktop based data centric application that its main functionality is to view and edit data) represent cases where minimal coding is required.

Of course this simplicity means that the developer’s role will be limited as even a power user might be proven capable to provide a solution!

In contrast, having a domain that requires the development of specialized algorithms or presents some user experience challenges is where more design and coding will be needed centralizing the role of the developer, usually as the most important success factor in this types of exercises.

It is generally admitted that the most successful software projects were created around a very small team of core developers who develop the ‘guts’ of the solution and while the team size usually are grows very fast as the project matures, the foundation of it remain the same following the original architecture.

A classical example of this is represented by google which was able to build its empire in top of several algorithms (like the notorious map-reduce) originally created by a very limited team of expert developers while today occupies hundreds of them.

Native Texan III
08-11-2010, 07:45 PM
I'm curious, does anyone use R? I've just a little exposure but plan to learn it. It is all the rage in statistical programming circles. You can't beat the price, $0.

http://www.r-project.org/

I use it extensively linked into C++
There is nothing to touch it for breadth of up to the minute topics.

CBedo
08-12-2010, 04:13 AM
I'm curious, does anyone use R? I've just a little exposure but plan to learn it. It is all the rage in statistical programming circles. You can't beat the price, $0.

http://www.r-project.org/I've used R quite a bit, standalone, and now embedding it in Ruby. It is very fast, and not too difficult to pick up syntax for graphing data sets. There are a couple good books, including a very recent one from O'Reilly. I think it's called R in a Nutshell.

CBedo
08-12-2010, 04:21 AM
I've been out of the loop, and this is the first time I've read this thread, I apologize for any lack of information I have since I just skimmed it very quickly.

My take is that that developing large scale, high complexity applications has never been easier, and without sacrificing solid OO, MVC framework driven methodologies, especially web base applications (which as far as I'm concerned is where everything is going. Frameworks like Rails for Ruby, or Django in Python speed up the development process and make the time to market quicker (and as we all know, as time goes down towards zero, value increases dramatically). Even Smalltalk now has some nice frameworks make it a valuable asset in development.

Lastly, for those that don't enjoy straight forward object oriented programming, maybe they should look at Haskell or Clojure or some other functional programming language where everything seems reversed or upside down to me, lol.

CBedo
08-12-2010, 04:27 AM
KingChas said:



I would strongly suggest the following book as one of the best introductions to programming:
http://mitpress.mit.edu/sicp/full-text/book/book.html

You can also find it in pdf format here:
http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBMQFjAA&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2 Fdownload%3Fdoi%3D10.1.1.98.7506%26rep%3Drep1%26ty pe%3Dpdf&rct=j&q=structure%20and%20interpretation%20of%20computer %20programs%20pdf&ei=vGZhTObUK4G0lQfZh8G_Cw&usg=AFQjCNHiIirQWd2CnTnNEZc6YOzqJ_a89A&sig2=PqtZw-KDCSYGIr07SarVEg&cad=rja

Here you can find an IDE that you can use with the book:
http://racket-lang.org/

I would also suggest learning emacs as your editor:

http://ftp.gnu.org/gnu/emacs/windows/
http://www.gnu.org/software/emacs/manual/emacs.pdf

I can also suggest using Python as your primary language for DB access, User Interfaces, file parsing, genetic programming etc.

When it comes to Excel or even better OpenOffice Calc, although they both are great research tools that can be very helpful for data mining and testing but they should not be overused as usually is the case, in an attempt to actually replace functionality that should be implemented using a more advanced programming environment.Python is a great choice, especially with the Django framework for web development, but I'd also highly recommend Ruby, and for web development, Ruby on Rails.

Pragmatic Programmers Learn to Program (with Ruby I think?) is a very good introduction to object oriented programming.

As far as editors or IDEs, there are a number of good free editors to start with, such as Kimodo Edit, and as far as free IDEs go, NetBeans has come along way (For full disclosure, I have almost abandoned development on the Windows platform, and on the mac, develop with the Textmate editor and more and more, Rubymine IDE from JetBrains.)

CBedo
08-12-2010, 04:31 AM
to add some database and querying, speed may become more important.

Oh, and speed of querying IS ABSOLUTELY important.You can get very acceptable speed with a SQL based db like MySQL or Postgres as long as you have good design of schemas and indexes, but for some of the things I'm experimenting with and want blazing speed, I'm trying document based storage noSQL solutions like MongoDB, Couch, Cassandra, Redis, etc (I'm a Mongo fan).

CBedo
08-12-2010, 04:47 AM
Boats,

How long have you been programming?

All I can tell you is that all the programmers I know recognize that it takes significantly longer to write software today than it did before Windows.

Dave, isn't part of this a function of giving the user exponentially more functionality and/or better user experience? Would it really take you longer to write something with a "DOS type" interface today than it did before?

DeltaLover
08-12-2010, 11:15 AM
Python and Ruby are pretty similar in features and approach.
As far as Web development goes, although a very early adapter of Ajax and other similar technologies, I have to admit that I try to stay way of it as much as possible, restricting my exposure to it only for my work as a consultant developing for my clients.

The struggle to make a browser based application to behave like a desktop one is not very pleasant (!) development experience plus it is translated to much longer deadlines compared to a classical standalone application!

I am also in the phase of abandoning the Windows platform targeting a linux based environment using solely OS tools (emacs, MySQL, Python – C++ - Common LISP as opposed to VS, .NET/C#, SQL server) although this transition will not be neither that simple nor that fast, since my existing handicapping system consists of +600 classes and +90K lines of code ...

I have never used Mongo before although I have done some research in the past about Object Databases. My impression though about it, is that based in its relation to JSON and BSON it is mostly suitable for Web application although I might be wrong and you probably can clarify that…

completebill
08-12-2010, 11:02 PM
Man, do I love this thread. What a treat to read, in such marked contrast to so many threads found on PA, which, to be frank, are meaningless drivel.


It is just amazing to me, in this day and age, that the PA Board is still full of "serious" discussion of such hopelessly outdated and discredited handicapping "theories" such s NEVER betting a layoff horse, or NEVER betting a horse stretching out for the first time, or trying Turf for the first time, or never betting a first-time starter.

Wake up folks!--This is the golden age of handicapping. WE have huge databases, statistics on almost any handicapping factor that can be imagined, and wonderful computer programs to analyze it all.

i apologize for placing this rant in this particular forum discussion. Those participating in THIS thread are far, far beyond what I describe.

It just does so amaze me. A pretty small number of brilliant, thinking, educated handicappers, on a forum otherwise primarily populated with the unenlightened (I had difficulty in avoiding the use of the term "idiots"!), still looking for the winning "System", which, certainly must be just around the corner, for sale to all (For a limited time only!!) for just $39.95.

raybo
08-13-2010, 12:25 AM
Man, do I love this thread. What a treat to read, in such marked contrast to so many threads found on PA, which, to be frank, are meaningless drivel.


It is just amazing to me, in this day and age, that the PA Board is still full of "serious" discussion of such hopelessly outdated and discredited handicapping "theories" such s NEVER betting a layoff horse, or NEVER betting a horse stretching out for the first time, or trying Turf for the first time, or never betting a first-time starter.

Wake up folks!--This is the golden age of handicapping. WE have huge databases, statistics on almost any handicapping factor that can be imagined, and wonderful computer programs to analyze it all.

i apologize for placing this rant in this particular forum discussion. Those participating in THIS thread are far, far beyond what I describe.

It just does so amaze me. A pretty small number of brilliant, thinking, educated handicappers, on a forum otherwise primarily populated with the unenlightened (I had difficulty in avoiding the use of the term "idiots"!), still looking for the winning "System", which, certainly must be just around the corner, for sale to all (For a limited time only!!) for just $39.95.

Agreed, on all points. The world is full of people wanting someone to "give" them the solution, and they'll even pay for it, if they have been convinced that the solution "might" be there. Fortunately, I had a mentor when I first started studying this game that told me, over and over, nobody has the whole answer and if they did, they wouldn't give it to you, for money or not.

I have stated before that I believe this forum has a higher percentage of successful handicappers than the racing population as a whole. The reason I said that was what you said, "enlightened" handicappers/wagerers, mostly due to technical expertise.

I wish I had started in computers on the software side, rather than the hardware side, because I would really like to be able to program, real programming. But, for whatever reason, I just can't make that jump from modifying macros to writing code from scratch. And, database design! Forget it, it's way over my head.

PaceAdvantage
08-13-2010, 02:19 AM
It just does so amaze me. A pretty small number of brilliant, thinking, educated handicappers, on a forum otherwise primarily populated with the unenlightened (I had difficulty in avoiding the use of the term "idiots"!), still looking for the winning "System", which, certainly must be just around the corner, for sale to all (For a limited time only!!) for just $39.95.What the hell are you babbling about? Who exactly is looking for the winning "System" for sale to all for just $39.95?

If anything, those kinds of posts (if and when they rarely appear) are quickly shot down.

Where's the scratching my head emoticon? I guess this is it-->:confused:

KingChas
08-13-2010, 02:52 AM
I wish I had started in computers on the software side, rather than the hardware side, because I would really like to be able to program, real programming. But, for whatever reason, I just can't make that jump from modifying macros to writing code from scratch. And, database design! Forget it, it's way over my head.

Can I ditto that Raybo.
Guys here have been trying to help me for years with links for beginners.
I just can't grasp how to start.I really appreciate those that try to help.
A big thank you.
What I need is actually,"A Cat in the Hat" type book on how to write my handicapping program in Windows.
As of yet it doesn't exist.

How could I write a capping program on the old Commodore complete with printout and can't do anything with windows...are these apples & oranges or are there some carryovers to be learned?.......this mystifies me :confused:

I am trying to cut down the 1 to 1&1/2 hrs I spend per racecard enetering the figs on the printout.
Some manual input of the figs as was done on the Commodore on my part is not a problem if I could get the time down per racecard.

Dave Schwartz
08-13-2010, 03:08 AM
Dave, isn't part of this a function of giving the user exponentially more functionality and/or better user experience? Would it really take you longer to write something with a "DOS type" interface today than it did before?

The issue isn't the interface but the operating system. There are just so many more things to program for.

Remember that in the DOS days very few programs even used a mouse. Everything was menu driven, which meant that the user followed the programmer's choices.

Today, everything is "event driven." That is, the user creates an event and the program (and the programmer) must react to the user choice(s).

In addition, in the DOS days everything was on a single thread. You opened a menu item and followed that path. You did not have the option of starting another path. Today, in may softwares you might actually have the same path opened multiple times! (Consider a word processor with multiple documents open at the same time.)


Of course, if one were to add all of today's functionality - the functionality that we all take for granted now - to a DOS program it would be very difficult.

We simply expect software to do a lot more today. And why shouldn't we?


Dave

CBedo
08-13-2010, 03:17 AM
Can I ditto that Raybo.
Guys here have been trying to help me for years with links for beginners.
I just can't grasp how to start.I really appreciate those that try to help.
A big thank you.
What I need is actually,"A Cat in the Hat" type book on how to write my handicapping program in Windows.
As of yet it doesn't exist.

How could I write a capping program on the old Commodore complete with printout and can't do anything with windows...are these apples & oranges or are there some carryovers to be learned?.......this mystifies me :confused:

I am trying to cut down the 1 to 1&1/2 hrs I spend per racecard enetering the figs on the printout.
Some manual input of the figs as was done on the Commodore on my part is not a problem if I could get the time down per racecard.In an earleir post, I recommended this book, Learn to Program (http://www.pragprog.com/titles/ltp2/learn-to-program-2nd-edition). A friend fo mine who knows some web design, but nothing about programming used it sucessfully (so far), and I just started my 12 year old nephew with it, and so far, he seems to be getting it.

Also, it just so happens that the book teaches you Ruby, which happens to be a great language to use/manipulate databases without having to know (almost) any SQL.

CBedo
08-13-2010, 03:38 AM
I have never used Mongo before although I have done some research in the past about Object Databases. My impression though about it, is that based in its relation to JSON and BSON it is mostly suitable for Web application although I might be wrong and you probably can clarify that…Although most of Ruby's (where my experience is) object relational mapping libraries (for those that just said "huh?", ORMs are just just code that acts as your peronal liason between your code and your database, for the most part letting you not care (with regards to code syntax) about what database sits underneath) were written to be part of a web application, they are pretty easily extracted to be used for native applications.

I must admit that I have not done this with Mongo, but I did google it and found an example of using Mongoid (one of the two most popular Mongo adapters) in pure Ruby without Rails.

On an even lower level, installing a Mongo instance locally is pretty straightforward, and using it, is as easy as opening a Mongo console window, just as you would a MySql or other SQL database interface. It's query language is obviously different, but fairly intuitive, and it's super easy to work with (ie db.horse.save( { speed_rating : 96 } ), and then to retrieve it db.horse.find()).

I just reread my post, and it confused even me, so feel free to ask more questions or PM me (anyone) if you want further info.

ranchwest
08-13-2010, 08:53 AM
I've gotten to this thread late, but whoa!

Let's get past all the buzz words and complexities and get back to the fundamentals of Open Source.

Open Source has to be readable. If the source can't be read by a large portion of the potential participants, then it is useless for the intended purpose of collaboration.

Variable names and comments that make the code readable are essential. I know there is so much more, but without this foundation, you have nothing.

DJofSD
08-13-2010, 09:43 AM
Can I ditto that Raybo.
Guys here have been trying to help me for years with links for beginners.
I just can't grasp how to start.I really appreciate those that try to help.
A big thank you.
What I need is actually,"A Cat in the Hat" type book on how to write my handicapping program in Windows.
As of yet it doesn't exist.

How could I write a capping program on the old Commodore complete with printout and can't do anything with windows...are these apples & oranges or are there some carryovers to be learned?.......this mystifies me :confused:

I am trying to cut down the 1 to 1&1/2 hrs I spend per racecard enetering the figs on the printout.
Some manual input of the figs as was done on the Commodore on my part is not a problem if I could get the time down per racecard.

At the simplest level, programming is a recipe. And just like cooking you need to have both the ingredients and the way to prepare them. There is an order to the process that if followed will result in a tasty dish.

Same with programming.

You can start here: http://sunnyday.mit.edu/16.355/wirth-refinement.html

And, his book, "Algorithms + Data Structures = Programs" is a classic, if you can find it.

For information about data structures and fundamental algorithms that is the bible of computer science, see Donald Knuth's series: http://www-cs-faculty.stanford.edu/~uno/taocp.html

Dave Schwartz
08-13-2010, 10:46 AM
Open Source has to be readable. If the source can't be read by a large portion of the potential participants, then it is useless for the intended purpose of collaboration.

Ranch,

While I tend to agree with you, remember that the goal of open source is not so that everyone on the planet, even the lowest level of programmer can program in it.

The point of open source is that enough qualified programmers can contribute to the project so that the project is continually moving forward.


Dave

DJofSD
08-13-2010, 10:52 AM
The issue isn't the interface but the operating system. There are just so many more things to program for.

Remember that in the DOS days very few programs even used a mouse. Everything was menu driven, which meant that the user followed the programmer's choices.

Today, everything is "event driven." That is, the user creates an event and the program (and the programmer) must react to the user choice(s).

In addition, in the DOS days everything was on a single thread. You opened a menu item and followed that path. You did not have the option of starting another path. Today, in may softwares you might actually have the same path opened multiple times! (Consider a word processor with multiple documents open at the same time.)


Of course, if one were to add all of today's functionality - the functionality that we all take for granted now - to a DOS program it would be very difficult.

We simply expect software to do a lot more today. And why shouldn't we?


Dave
Right. DOS is single task, single thread, simple memory management and at best a monitor -- you can call in an operating system but it pales in comparison to a true multiprogramming, multitasking OS.

KingChas
08-13-2010, 11:41 AM
CBedo & DJofSD,
thanks for the links.
What I am doing is gathering these links now and will see if I can get anywhere with them.

Being in the middle of the Spa season.
Right now is not a good time for me to shall I say overload the brain.

After the BC which is my downtime for horseracing..(Big football fan).
I will then be attempting this, to me, massive task.

I will get back to everyone if I get can out of the starting gate.

Thank you all,once more.

ranchwest
08-13-2010, 01:15 PM
Ranch,

While I tend to agree with you, remember that the goal of open source is not so that everyone on the planet, even the lowest level of programmer can program in it.

The point of open source is that enough qualified programmers can contribute to the project so that the project is continually moving forward.


Dave
Most any collaboration is enhanced by having the participants on a similar level. I didn't mean to imply that everyone should participate equally. Rather my statements were meant to convey that without readability virtually nobody will be able to participate in any significant way.

Dave Schwartz
08-13-2010, 03:27 PM
I agree completely. I think that is what I said in one of my original posts.

But truthfully, for horse racing an open source program that was easy to customize by a relatively inexperienced programmer would be a wonderful thing. The amateur level programmers' work should probably not be used in the official product without peer review.


Dave

ranchwest
08-13-2010, 08:38 PM
I agree completely. I think that is what I said in one of my original posts.

But truthfully, for horse racing an open source program that was easy to customize by a relatively inexperienced programmer would be a wonderful thing. The amateur level programmers' work should probably not be used in the official product without peer review.


Dave
I agree.

I basically still agree with The Mythical Man-Month. The lead programmer should be assisted in a variety of ways by other team members.

One of the major challenges with handicapping programming is that most people are pretty clueless as to what they want until after at least one iteration. For me, it always seems to be a work in progress. I'm normally able to design solid software up front, but then I'm usually able to identify the requirements up front.

Dave Schwartz
08-13-2010, 10:44 PM
Well, my belief is that an open source system should be programmable on the user level.

That is, of course, a much bigger problem to solve.

Dave

Indulto
08-14-2010, 02:59 AM
... But truthfully, for horse racing an open source program that was easy to customize by a relatively inexperienced programmer would be a wonderful thing. The amateur level programmers' work should probably not be used in the official product without peer review. ...Nothing unusual about that. Even a lead/master programmer's code is subject to review and must meet the same criteria for readability and code documentaion. Nor is it unusual for an individual of any level of experience to come up with an elegant and/or creatuve solution to a problem on his/her own.

As a proprietary software vendor, DS, do you really see yourself getting involved in an open source project involving horseracing?

Dave Schwartz
08-14-2010, 03:11 AM
Indulto,

Probably not. But that is a different story.

The software I develop will always be for the high end, serious player who wants to play at the professional level. Or, at least can afford to play at the professional level.

Our users typically do not wish to be restrained by the way someone else thinks you should handicap. They want to "roll their own" without having to actually write the program.

It is a different market.


Dave

Handiman
08-14-2010, 04:03 AM
Hi...this is Handi.....remember me....:lol:

This thread has some awesome responses. There are a couple of things to think about I believe. Is the project to be a standalone desktop program or is it going to be web based.

Given that, then the language to be used is going to probably be a language that the main force behind the project is accustomed to using. The open source project that I have been involved in was never meant to be a commercial product. Anybody that is a serious programmer would most likely not be interested in an open source project to do with Handicapping in the first place.

That being said, I would like to help produce as effective a program as possible. I'm 60 and have a serious heart condition. So for me it is a labor of love and a chance to leave something behind. Lord knows my attempts at world peace have not worked out well.

I just wanted to make sure I haven't missed some major design or programming breakthrough. So thanks to everyone for kicking down some very interesting responses.

Handi :)

Hoofless_Wonder
08-14-2010, 06:06 PM
Hi...this is Handi.....remember me....:lol:

...Lord knows my attempts at world peace have not worked out well.



You and me both.

I'm surprised nobody mentioned Perl. Your efforts with Handifast have been using VB6 and/or Liberty, right? I would think perl would make a nice fit (at least as a wrapper), assuming you're thinking "open source" and multiple platforms.

Great thread. I'm just a hack that uses bash scripts on Linux for a few rudimentary calculations, but I've been thinking of expanding out into perl, python, ruby (with or without rails), MySQL database, or something a little more powerful.

What limited programming I've done has been in Fortran 77 (many moons ago with punchcards), and a little (gasp!) C++. I find most languages too difficult for me to pick up - I just don't think in that logical of mindset. If it doesn't have a "DO LOOP", I'm lost. One 4GL (I think) language which was awesome for a hack like me to use is SAS, but I don't think that comes for free and there's no open standard equivalent (that I know of).

Handi, I wish I had your motivation and outlook on life, as you want to add something more to the Horseplayer community. I thought your legacy was already assured with Handifast.....:ThmbUp:

CBedo
08-14-2010, 09:27 PM
You and me both.

I'm surprised nobody mentioned Perl. Your efforts with Handifast have been using VB6 and/or Liberty, right? I would think perl would make a nice fit (at least as a wrapper), assuming you're thinking "open source" and multiple platforms.

I think Perl is a great language that for the right project can be the right tool, BUT I think it's terrible for open source projects if you actually want collaboration. Have you ever tried to read Perl code? LOL. Sometimes, I can't even read my own code, let alone someone elses. :confused:

Hoofless_Wonder
08-15-2010, 04:11 PM
Agreed - perl can be quite cryptic. I support IBM storage storage (for the customers) for a living, and I always cringe when some sys admin or techie says, "yeah, I got this little perl script that generates this query for a report - got a bug, can you help me?" Korn shell scripts are so much easier to work with, but not nearly as powerful.

The spreadsheet guys probably have the right idea in keeping it simple, and I think anything that needs compiling is, well, over the top. We're not trying to split the atom here, just parse out a CSV file and make a few (relatively) simple calculations. Anything in-depth is futile, as the jockey's decision, a rock on the track, a washed out nag with kidney sweat, a starter with a firm grip on a horse's tail, etc., cancel out the accuracy of modeled projections. An exception to that view would be ready access to a detailed database, as more precise and not readily available data for input can only help.

Personally, I prefer a command-line driven simple tool that can run on Linux and Windows (and maybe some day on my new Android phone), and I think perl comes pretty close to doing all that.....

CBedo
08-15-2010, 07:57 PM
Personally, I prefer a command-line driven simple tool that can run on Linux and Windows (and maybe some day on my new Android phone), and I think perl comes pretty close to doing all that.....In the past, I have thought that native applications on the desktop were the way to go, but I have seen the light, LOL, and now think deploying a web based app to the cloud is the way to go. Then users can access it from almost any device, from almost anywhere (even if it's Internet Explorer :rolleyes: ).

DJofSD
08-16-2010, 08:03 AM
Agreed - perl can be quite cryptic. I support IBM storage storage (for the customers) for a living, and I always cringe when some sys admin or techie says, "yeah, I got this little perl script that generates this query for a report - got a bug, can you help me?" Korn shell scripts are so much easier to work with, but not nearly as powerful.



DFSMS/DFHSM eh?

I remember an ISV was going to port perl to MVS. Has that happened or are you expected to use USS?

dukeofperl
08-16-2010, 11:11 PM
Perl simply takes a bit of getting used to, same as any other language.

CSVtrimmer and TASK are both written 100% in Perl and my current project (seems like forever) is also in Perl. Huge project FWIW.

IMO, no language can match Perl's ease-of-use when it comes to parsing data, regular expressions, data structures (arrays, hashes, arrays of arrays, arrays of hashes, hashes of arrays, hashes of hashes, references et al) and the effecient implementation of OO programming. And it's a dynamically-typed language, meaning you can handle data types with context and coercion.

Dove-tail in the CPAN archives, literally thousands of pre-written and for the most part, pre-tested Perl modules that plug right in and save a bunch of time, and things get even easier and better.

As an example, just this week I finished a complete backend SOAP server in Perl that interfaces with a front end ASP.NET SOAP server. There are thousands of lines of code involved and at the most, I wrote maybe a couple hundred of those lines. Nearly all the code is from freely distributed CPAN modules. You simply can't beat that.

It's a great 1st language but as mentioned, it can be a bit difficult if you already know other languages. But not always. I came to Perl from C, Pascal, KSH and particularily AWK/SED. I know the feeling.

raybo
08-17-2010, 06:55 AM
Perl simply takes a bit of getting used to, same as any other language.

CSVtrimmer and TASK are both written 100% in Perl and my current project (seems like forever) is also in Perl. Huge project FWIW.

IMO, no language can match Perl's ease-of-use when it comes to parsing data, regular expressions, data structures (arrays, hashes, arrays of arrays, arrays of hashes, hashes of arrays, hashes of hashes, references et al) and the effecient implementation of OO programming. And it's a dynamically-typed language, meaning you can handle data types with context and coercion.

Dove-tail in the CPAN archives, literally thousands of pre-written and for the most part, pre-tested Perl modules that plug right in and save a bunch of time, and things get even easier and better.

As an example, just this week I finished a complete backend SOAP server in Perl that interfaces with a front end ASP.NET SOAP server. There are thousands of lines of code involved and at the most, I wrote maybe a couple hundred of those lines. Nearly all the code is from freely distributed CPAN modules. You simply can't beat that.

It's a great 1st language but as mentioned, it can be a bit difficult if you already know other languages. But not always. I came to Perl from C, Pascal, KSH and particularily AWK/SED. I know the feeling.

Is Perl free?

lsosa54
08-17-2010, 07:49 AM
Is Perl free?

Seems to be:

http://perl.about.com/od/gettingstartedwithperl/p/whatisperl.htm

dukeofperl
08-17-2010, 10:45 AM
Is Perl free?

Yes Perl is free.

If you run any of the *nix's (Linux, HPUX, AIX, SunOS, Solaris) it should be automatically loaded because in most cases, booting the OS relies on having Perl loaded to execute the scripts that instantiate some of the utilities (ssh, ftp etc).

If you want a free port of Perl (or Python or TCL) for windows (or *nix) go here ...

http://www.activestate.com/

I am not associated with Activestate in any way other than using their free products and some of their not-free products for many years.

Perl also has a huge support community -- simply google it up and you'll see tons of sites that offer help, support, examples, samples, freebies ...

Then there is CPAN, a repository of thousands of plug in modules, all free.

DeltaLover
08-17-2010, 10:55 AM
Although my core languages are C++ and LISP I found Perl a great tool that as a ‘Swiss knife’ helped me solve lots of real world problems fast and efficient thanks to its very expressive syntax, unmatched support for regular expressions and CPAN!

When it comes to scripting languages I have to admit it that I still good old Perl versus the more ‘modern’ Python and Ruby.

Of course I cannot suggest it for things like UI development and algorithmic programming but this is not what Perl was created for!

serp
08-17-2010, 11:24 AM
The big push these days is to have your interface on the web. There is resistance obviously as where the data lies becomes fuzzy but local storage options are coming in html5. The future of desktop is a hybrid of online/offline apps. The apps will be vendor neutral so it won't matter if you are using a windows desktop, an ipad, an android phone, or whatever the next popular gadget is your app will be available.

It won't matter what o/s or language you use just as long as you know how to make it properly output in a standard way so that all browsers can read it.

On a related note, jquery mobile is coming later this year and it looks fabulous.
http://jquerymobile.com/

dukeofperl
08-17-2010, 02:02 PM
Although my core languages are C++ and LISP I found Perl a great tool that as a ‘Swiss knife’ helped me solve lots of real world problems fast and efficient thanks to its very expressive syntax, unmatched support for regular expressions and CPAN!

When it comes to scripting languages I have to admit it that I still good old Perl versus the more ‘modern’ Python and Ruby.

Of course I cannot suggest it for things like UI development and algorithmic programming but this is not what Perl was created for!

I generally agree ... let me add a bit.

Until Python and Ruby establish community support on par with Perl and repositories that compete with CPAN, they will remain 2nd and 3rd to Perl. And obviously, Perl is well cemented-in with many companies and organizations as their core scripting language so there's little chance they are going to change horses without a very good reason.

In the (G)UI arena, Perl-Tk is quite easy to learn and does a pretty good job overall. The downside to Tk is the lack of any [free] Rapid Application Development tools that are on par with RAD tools available for other high-level languages. Along the same lines, Perl is now pushing out what is called TKx which is an API that brings the TCL-Tk bindings to Perl. This event looks promising and I hope to free up some time to actually develop a project using that capability. And as usual, the documentation is lagging the implementation. What's new?

Also, there are WxWigets (formerly WxWindows) bindings for Perl that are portable across platforms and adopt the native look of the OS on which they are being used.

More ... let's talk web. One would have to go far and wide to find a better web-language than Perl. Not only is Perl still king in the CGI world, it holds it's own in the Relational Database world, with the DBI interace and the DBD drivers for Oracle, MySQL, Access et al, along with being able to perform any task in the LAMP architecture including any PHP task. Another arena for Perl is SOAP with their SOAP toolkit(s) and myriad of CPAN modules that automatically handle the messy stuff like XML. Or try Perl in a speedy MOD-Perl environment where Perl is builtin to the Apache server or try it with Fast-CGI plugged in to experience some real server speed.

I could go on but rather to the point ... Perl is expanding it's horizons wider, farther and faster nearly every day. It will be extremely difficult for any general purpose (scripting) language to catch up -- JMO.

And of course, there are no recessions for good Perl developers, they are nearly always in demand.

CBedo
08-17-2010, 02:36 PM
On a related note, jquery mobile is coming later this year and it looks fabulous.
http://jquerymobile.com/You can already use jquery on a mobile platform with jqtouch, although it is optimized for the iphone/ipad.

raybo
08-17-2010, 02:50 PM
Clear something up for me.

What is the difference between a "scripting" language and a "programming" language.

I have read some and tried a little VB, and, of course I have used quite a bit of VBA, relating to the modification of recorded macros in Excel.

serp
08-17-2010, 02:51 PM
You can already use jquery on a mobile platform with jqtouch, although it is optimized for the iphone/ipad.
Yes, I have used it and it's nice but unfortunately isn't compatible with all that this will be (plus it will be an official part of jquery's offerings).

serp
08-17-2010, 02:53 PM
Clear something up for me.

What is the difference between a "scripting" language and a "programming" language.

I have read some and tried a little VB, and, of course I have used quite a bit of VBA, relating to the modification of recorded macros in Excel.
I think generally "scripting" languages are ones that are interpretted on runtime and "programming" languages are those that are compiled and executed as binaries. At least that's how people tend to use them even if the words don't match up perfectly.

dukeofperl
08-17-2010, 03:47 PM
In general terms, it would be correct to say scripts are interpreted (use an interpreter and execute one line at a time) versus programs being compiled into a binary (with the libraries statically or dynamically linked) and do not need a run-time engine to work.

Side note: Perl may be unique in that it uses both. First the code is interpreted and if code passes muster, it is then compiled into byte code and execute. That's how Perl gets it's speed.

Other classical differences are the nature of the programs/scripts. Generally scripts are small and have a very narrow focus, such as general utilities in a Unix or Linux system administration environment. Monitoring disk usage, checking disk levelling, working with user accounts, killing processes ... the everyday chores of the system administrator. Where Programs are usually larger in size and scope, and are less black-box than scripts, in that they are flexible, possibly have an UI and can be driven by the user the way the user wants. Think of a script as performing one task by typing it on a command line and a progam as something like MSword. Extreme example, but it fits.

These days though, the lines between the two are starting to disappear. For example, scripting languages now create full-blown engines for Apache web servers or front/back end database work or a myriad of other complicated tasks.

And today, most scripting languages can be compiled just like their big brothers ... thanks to 3rd party vendors.

This question would have been much easier to answer 15 years ago when there were definitive boundaries between the two.

CBedo
08-17-2010, 10:23 PM
Yes, I have used it and it's nice but unfortunately isn't compatible with all that this will be (plus it will be an official part of jquery's offerings).jquery is becoming my de facto .js toolbox. In Ruby on Rails, Prototype is kind of the standard, but more and more are using jquery. It's so easy to write unobtrusive javascript without knowing much javascript, lol.

bcgreg
08-18-2010, 08:00 AM
Hi all,

Been reading this thread from the beginning even though I have no clue what I am reading at times :eek: lol. I cannot add anything to the discussion unfortunately and merely have a humble question for you experts...

For a relative beginner to databases, is there a very user-friendly front-end application for say, a mysql database, so I can get at my data with little programming knowlege? Yes, I am lazy.

Thanks in advance,
bcgreg

DJofSD
08-18-2010, 08:56 AM
You need to be a little more specific when you say get at your data.

vegasone
08-18-2010, 09:19 AM
HeidiSQL is a free front end for MySQL. There is also one available on the MYSQL website as well....Each have their own advantages.

bcgreg
08-18-2010, 10:31 AM
You need to be a little more specific when you say get at your data.

Mainly designing queries and reports.

Thanks,
bcgreg

completebill
08-18-2010, 02:55 PM
What the hell are you babbling about? Who exactly is looking for the winning "System" for sale to all for just $39.95?

If anything, those kinds of posts (if and when they rarely appear) are quickly shot down.

Where's the scratching my head emoticon? I guess this is it-->:confused:

WOW!!!---I had no idea that, as the Forum administrator, you would take my remarks so personally. It is unfortunate that, in your capacity as administrator, you have, in your defensiveness, well illustrated my point, by responding with the name-calling so prevalent on the Pace Advantage Board.

I respectfully suggest that, whether you agree or disagree with me, no intelligent and literate person could accurately describe my remarks as "babbling". I was simply pointing out my observation, which I believe to be accurate, of the great dichotomy that is pervasive in these Forums, between a number of contributors who consistently display insight, knowledge, intelligence, and reasoned thought in their posts, and the large number of posters who so consistently display their complete lack of knowledge, their stubborn rejection of sound handicapping principles, and their inability to move beyond biases, prejudices, and soundly discredited handicapping ideas and mythologies.

Sincere questions and a true willingness to learn, of course, must always be respected. I have no problem whatever with questions and contributions from those seeking knowledge.

If you question my observations of the quality of discourse pervasive in too many of the Forums, look at the current Forum, boasting, as I write, 17 posts regarding betting "Hunches" There are now 162 posts in the Forum about "Systems", some intelligent, but most of the sort decried by me in the post to which you objected.

I will freely admit that I am NOT familiar with other general handicapping forums. Perhaps it is true that Pace Advantage is, indeed, superior in overall quality of discussion to other such sites.

I AM familiar with the discussion Forums associated with the major Computer Handicapping programs (HTR, HSH, JCapper, and RDSS). By contrast with THESE Forums, I submit that I do not overstate the case that PA is, to a large extent, overrun with name-calling and ignorance, in posts by those who have nothing of substance to contribute.

PaceAdvantage
08-19-2010, 09:41 PM
I AM familiar with the discussion Forums associated with the major Computer Handicapping programs (HTR, HSH, JCapper, and RDSS). By contrast with THESE Forums, I submit that I do not overstate the case that PA is, to a large extent, overrun with name-calling and ignorance, in posts by those who have nothing of substance to contribute.I did not call you a name. I accurately stated my opinion of what you wrote in this thread...babble. And I have a very good reason for doing so:

The title of this thread is "Programmers Please."

The title is not "Please state your ignorant opinion of the PA forums."

That was mistake #1 on your part, and a valid reason why I addressed you as I did.

You are free, of course, to hold any opinion you wish, however misinformed it may be. You are also free to not come to PaceAdvantage. You can hang out on those other forums and enjoy all that they have to offer you.

Did you ever stop and think though, that every single forum you just named is a forum dedicated to a single commercial product, while PaceAdvantage is a general racing forum dedicated to just about anything anyone wishes to discuss?

The benefit is that there is much more content and action here than on any of the other sites you mention. The drawback of course is that there is going to be more content here that YOU will personally have absolutely NO interest in reading or participating.

There are benefits and drawbacks to all sorts of things in life. I personally found your comments misinformed, myopic and insulting, and I responded quite appropriately IMO.

Hoofless_Wonder
08-22-2010, 10:43 PM
Perl simply takes a bit of getting used to, same as any other language.

Thanks for weighing in on the discussion Duke. Although one would not expect a totally unbiased view of perl from a gent with the moniker "Dukeofperl" (;) ), you've confirmed my perception of the tool. Some exellent posts.

I've run your TASK utility, and that bad boy rocks. It chewed up 58 DRF files in something like 7 seconds. And with the world of IT ever changing, I figure it couldn't hurt to have another decent skill to help stay employed, and perl seems a much better choice than the fashionable language of the week.

CBedo
08-22-2010, 11:00 PM
Thanks for weighing in on the discussion Duke. Although one would not expect a totally unbiased view of perl from a gent with the moniker "Dukeofperl" (;) ), you've confirmed my perception of the tool. Some exellent posts.

I've run your TASK utility, and that bad boy rocks. It chewed up 58 DRF files in something like 7 seconds. And with the world of IT ever changing, I figure it couldn't hurt to have another decent skill to help stay employed, and perl seems a much better choice than the fashionable language of the week.I don't want to make this a perl versus xxx thread, but have to at least make one remark.

All of the scripting languages are tools, and tools have intended purposes. Pick the right tool for the job, and your life is easier. A hammer is the right tool to drive a nail, but not exactly optimal to put in a screw.

Perl definitely has advantages in certain areas, but if you are using it to write web apps, you are using the hammer to put in the screw, lol. In my opinion, in the area of web apps, ruby and/or python are the right tools. They reduce complexity and thus reduce development time and time to market.

Choose the right tool for the job, and go with what works for you. Ruby & Python often the right tools, and are not just the "fashionable language of the week."

Hoofless_Wonder
08-23-2010, 04:30 AM
....A hammer is the right tool to drive a nail, but not exactly optimal to put in a screw.

Perl definitely has advantages in certain areas, but if you are using it to write web apps, you are using the hammer to put in the screw, lol.

Choose the right tool for the job, and go with what works for you. Ruby & Python often the right tools, and are not just the "fashionable language of the week."

Spoken like a true coder.:) It's good to know my people skills as a system test and integrator are still solid, since I used to be able to get under the skin of developers with all those pesky bug reports I'd write up.

I won't argue that Ruby and Python might be great for web-based apps, but is a web-based app the best approach for handicapping the ponies? In other words, why are you using screws to attach shingles, when my hammer (and nails) works just fine? All I'm trying to do is upgrade to a nail-gun, since I want to go from bash to perl.

Often the "right tool" for the job is the one that's within the skill level of the user, and not the optimum tool for the subject matter expert.

Handi was kinda light on requirements when he started this thread, and maybe I shouldn't be posting since I'm NOT a programmer, but it appears to me the vast majority of feedback from the coders is about the user interface and "theory" of tools vs. the actual nuts and bolts of calculations. My goal (which is different from those who make a living programming) is to have a simple tool that I can easily run/understand/modify, will be supported long-term and run on Linux and Windows, and eventually gets me to a simple output - say, one number per horse. That way I can spend more time formulating my wagers, monitoring the pools, and trying to get a glimpse of the horses in the paddock and on the track warming up to make my final decisions.

Dave Schwartz
08-23-2010, 11:54 AM
Chris,

Good post. And it describes me.

In my development of commercial software, I am very vertical. I only have to do what applies to one app, with very little web connection.

Doing IT consulting I used to be exposed to a more horizontal set of problems.

I recall the work I did for an airline about 10 years ago. LOL - My job there was to "watch" about 150 old applications and make sure they didn't break. The data would come in on an HP UNIX system, move across the network using tools such as "Progress," (my personal choice) Clarion, and 3 or 4 others that I had never heard of until I got there. They even had an entire department running in and out of Excel. (That was pretty unprofessional and I made about 90% of it go away.)

Now, as we move towards true web-based computing I find I am trapped in the world of desktop apps. I still try to solve everything from the desktop.

Like getting to users' computers to communicate with each other via the web. I'm still doing that peer-to-peer. I'm using some neat shortcuts, but in the long run I must add tools to my utility belt.

Next up for me is Android apps. I have a use for them in my next round of software development for horses. (I suppose I'll have to learn about IPhones as well.)


Dave

CBedo
08-23-2010, 12:08 PM
is a web-based app the best approach for handicapping the ponies?My goal is to have a simple tool that I can easily run/understand/modify, will be supported long-term and run on Linux and WindowsI think you just answered the question. What could be simpler to use and easier to support than a web app which should run on any device on any OS?

As background, if you looked at the chronology of my many posts here at PA, you would see that I started out pretty much in the same position as you and others here. I was looking for a better way to manage and process information. As I was led to software, I naturally assumed that a native application would be the right way to go, and I was looking for someone to do it for me (I was not a programmer by trade, having done some a long time ago, but did nothing but excel macros at the time). As I dug deeper, I realized that to get exactly what I wanted, I might need to do it myself, and began to research ways to do it. Interestingly, the more I read and tried to think about my specifications, the more I came up with just what you said, "simple tool that I can easily run/understand/modify....," and wanted to have access to it from anywhere on more than one device. This quickly led me away from my preconceived notion of native applications and towards web based (note that this does not mean I have to have a internet connection always to use my work, just to do the initial processing). This led me to researching many programming languages including but not limited to C++, Smalltalk, Perl, Python, Ruby, & even pure SQL. I had no preconceived notions since I didn't know any of thse languages. I just wanted to find what would work best for me (the right tool for the job, and the right tool for me). It became clear that frameworks built on Python or Ruby were the best way to go, and I landed on Ruby and Ruby on Rails since it the ease of semantics just seemed to come to me more quickly.

This is why I feel I have the right to try to help others who are struggling with the same decisions. I have no agenda to push "my way." I just think it's the easiest way to get up and running quickly and to accomplish my horse racing goals.

Lastly, web apps aren't just about pretty UIs (that's where I'm weakest in my programming currently for sure). Everything I do is about the underlying models and algorithms. If you look back through my posts in the past, I even was able to get a fully automated model running last summer that did everything from download BRIS files, process them through multiple models, generate odds lines, watch for overlays, and then upload bets to PTC. (it wasn't perfect, but did generate a small profit over the time of the test).

dukeofperl
08-23-2010, 09:22 PM
Thanks for weighing in on the discussion Duke. Although one would not expect a totally unbiased view of perl from a gent with the moniker "Dukeofperl" (;) ), you've confirmed my perception of the tool. Some exellent posts.

I've run your TASK utility, and that bad boy rocks. It chewed up 58 DRF files in something like 7 seconds. And with the world of IT ever changing, I figure it couldn't hurt to have another decent skill to help stay employed, and perl seems a much better choice than the fashionable language of the week.

There's nothing like data structures to speed up a program :)

FWIW: my handle dukeofperl, not only relates to the Perl language but also is a spin off of the '60s rock song Duke of Earl. The older folks see right through it ... the youngstes just give me a strange look. LOL