Maple Programming: New Applications
http://www.maplesoft.com/applications/category.aspx?cid=226
en-us2015 Maplesoft, A Division of Waterloo Maple Inc.Maplesoft Document SystemTue, 01 Dec 2015 11:07:37 GMTTue, 01 Dec 2015 11:07:37 GMTNew applications in the Maple Programming categoryhttp://www.mapleprimes.com/images/mapleapps.gifMaple Programming: New Applications
http://www.maplesoft.com/applications/category.aspx?cid=226
Sending Emails from the Maple Command Line
http://www.maplesoft.com/applications/view.aspx?SID=153912&ref=Feed
You can send emails from the Maple command line via Mailgun (http://mailgun.com) a free email delivery service with an web-based API. The code in this application communicates with this API to send an email; you'll need to replace certain parts with details from your own Mailgun account.<img src="/applications/images/app_image_blank_lg.jpg" alt="Sending Emails from the Maple Command Line" align="left"/>You can send emails from the Maple command line via Mailgun (http://mailgun.com) a free email delivery service with an web-based API. The code in this application communicates with this API to send an email; you'll need to replace certain parts with details from your own Mailgun account.153912Fri, 30 Oct 2015 04:00:00 ZSamir KhanSamir KhanComputational Performance with evalhf and Compile: A Newton Fractal Case Study
http://www.maplesoft.com/applications/view.aspx?SID=153683&ref=Feed
<p>This Tips and Techniques article focuses on the relative performance of Maple's various modes for floating-point computations. The example used here is the computation of a particular Newton fractal, which is easily parallelizable. We compute an image representation for this fractal under several computational modes, using both serial and multithreaded computation schemes.</p>
<p>This article is a follow up to a previous Tips and Techniques, <a href="http://www.maplesoft.com/applications/view.aspx?SID=153645">evalhf, Compile, hfloat and all that</a>, which discusses functionality differences amongst Maple's the different floating-point computation modes available in Maple.</p><img src="/view.aspx?si=153683/thumb.jpg" alt="Computational Performance with evalhf and Compile: A Newton Fractal Case Study" align="left"/><p>This Tips and Techniques article focuses on the relative performance of Maple's various modes for floating-point computations. The example used here is the computation of a particular Newton fractal, which is easily parallelizable. We compute an image representation for this fractal under several computational modes, using both serial and multithreaded computation schemes.</p>
<p>This article is a follow up to a previous Tips and Techniques, <a href="http://www.maplesoft.com/applications/view.aspx?SID=153645">evalhf, Compile, hfloat and all that</a>, which discusses functionality differences amongst Maple's the different floating-point computation modes available in Maple.</p>153683Fri, 26 Sep 2014 04:00:00 ZDave LinderDave LinderGenerating random numbers efficiently
http://www.maplesoft.com/applications/view.aspx?SID=153662&ref=Feed
Generating (pseudo-)random values is a frequent task in simulations and other programs. For some situations, you want to generate some combinatorial or algebraic values, such as a list or a polynomial; in other situations, you need random numbers, from a distribution that is uniform or more complicated. In this article I'll talk about all of these situations.<img src="/view.aspx?si=153662/thumb.jpg" alt="Generating random numbers efficiently" align="left"/>Generating (pseudo-)random values is a frequent task in simulations and other programs. For some situations, you want to generate some combinatorial or algebraic values, such as a list or a polynomial; in other situations, you need random numbers, from a distribution that is uniform or more complicated. In this article I'll talk about all of these situations.153662Mon, 18 Aug 2014 04:00:00 ZDr. Erik PostmaDr. Erik Postmaevalhf, Compile, hfloat and all that
http://www.maplesoft.com/applications/view.aspx?SID=153645&ref=Feed
Users sometimes ask how to make their floating-point (numeric) computations perform faster in Maple. The answers often include references to special terms such as evalhf, the Compiler, and option hfloat. A difficulty for the non-expert lies in knowing which of these can be used, and when. This Tips and Techniques attempts to clear up some of the mystery of these terms, by discussion and functionality comparison.<img src="/applications/images/app_image_blank_lg.jpg" alt="evalhf, Compile, hfloat and all that" align="left"/>Users sometimes ask how to make their floating-point (numeric) computations perform faster in Maple. The answers often include references to special terms such as evalhf, the Compiler, and option hfloat. A difficulty for the non-expert lies in knowing which of these can be used, and when. This Tips and Techniques attempts to clear up some of the mystery of these terms, by discussion and functionality comparison.153645Tue, 22 Jul 2014 04:00:00 ZDave LinderDave LinderCustom Plot Sizing and Shading
http://www.maplesoft.com/applications/view.aspx?SID=153607&ref=Feed
Many Maple users, no matter what they are working on, make use of Maple’s plotting abilities, and so this Tips and Techniques highlights some small but useful new plotting features introduced in Maple 18. Maple 18 give you the ability to set the size of your plots, giving you more control over your document’s use of space, as well as the ability to set the colour gradients used in 3-D plots. In this Tips and Techniques, you will find a variety of example that show you how to take advantage of these new plot options.<img src="/view.aspx?si=153607/thumb.jpg" alt="Custom Plot Sizing and Shading" align="left"/>Many Maple users, no matter what they are working on, make use of Maple’s plotting abilities, and so this Tips and Techniques highlights some small but useful new plotting features introduced in Maple 18. Maple 18 give you the ability to set the size of your plots, giving you more control over your document’s use of space, as well as the ability to set the colour gradients used in 3-D plots. In this Tips and Techniques, you will find a variety of example that show you how to take advantage of these new plot options.153607Mon, 16 Jun 2014 04:00:00 ZDave LinderDave LinderHopalong Attractor
http://www.maplesoft.com/applications/view.aspx?SID=153557&ref=Feed
<p>Hopalong attractors are fractals, introduced by Barry Martin of Aston University in Birmingham, England. This application allows you to explore the Hopalong by varying the parameters, the number of iterations, the iterates' symbol size, and the background color choice. You can also change the starting values of each of the three orbits by dragging the cross symbols appearing in the plot. Full details on how this application was created using the Explore command with a user-defined module are included.</p><img src="/view.aspx?si=153557/95fa944692de1fb724cb7e758e6c56e5.gif" alt="Hopalong Attractor" align="left"/><p>Hopalong attractors are fractals, introduced by Barry Martin of Aston University in Birmingham, England. This application allows you to explore the Hopalong by varying the parameters, the number of iterations, the iterates' symbol size, and the background color choice. You can also change the starting values of each of the three orbits by dragging the cross symbols appearing in the plot. Full details on how this application was created using the Explore command with a user-defined module are included.</p>153557Mon, 28 Apr 2014 04:00:00 ZDave LinderDave LinderClassroom Tips and Techniques: The Explore Command in Maple 18
http://www.maplesoft.com/applications/view.aspx?SID=153552&ref=Feed
The Explore functionality, which provides an interactive experience with parameter-dependent plots and expressions, has been significantly enhanced in Maple 18. In this Tips and Techniques article, I will focus on some key usage points of using the Explore command with plots, including explorations based on simple Maple plots as well as user-defined plotting procedures.<img src="/view.aspx?si=153552/thumb.jpg" alt="Classroom Tips and Techniques: The Explore Command in Maple 18" align="left"/>The Explore functionality, which provides an interactive experience with parameter-dependent plots and expressions, has been significantly enhanced in Maple 18. In this Tips and Techniques article, I will focus on some key usage points of using the Explore command with plots, including explorations based on simple Maple plots as well as user-defined plotting procedures.153552Wed, 16 Apr 2014 04:00:00 ZDave LinderDave LinderGeneralized byte-oriented fast stream cipher that is resistant to reverse engineering
http://www.maplesoft.com/applications/view.aspx?SID=153499&ref=Feed
<p>A new numerous family of strong, to reverse engineering resistant, and fast byte-oriented stream-ciphers has been presented. One ought to unpack the file gbosc.zip, open the worksheet gbosc.mw in the Maple session, read it and test the application described.</p><img src="/applications/images/app_image_blank_lg.jpg" alt="Generalized byte-oriented fast stream cipher that is resistant to reverse engineering" align="left"/><p>A new numerous family of strong, to reverse engineering resistant, and fast byte-oriented stream-ciphers has been presented. One ought to unpack the file gbosc.zip, open the worksheet gbosc.mw in the Maple session, read it and test the application described.</p>153499Tue, 28 Jan 2014 05:00:00 ZCzeslaw KoscielnyCzeslaw KoscielnyClassroom Tips and Techniques: Slider-Control of Parameters in an ODE
http://www.maplesoft.com/applications/view.aspx?SID=152112&ref=Feed
Several ways to provide slider-control of parameters in a differential equation are considered. In particular, the cases of one and two parameters are illustrated, and for the case of two parameters, a 2-dimensional slider is constructed.<img src="/view.aspx?si=152112/thumb.jpg" alt="Classroom Tips and Techniques: Slider-Control of Parameters in an ODE" align="left"/>Several ways to provide slider-control of parameters in a differential equation are considered. In particular, the cases of one and two parameters are illustrated, and for the case of two parameters, a 2-dimensional slider is constructed.152112Mon, 23 Sep 2013 04:00:00 ZDr. Robert LopezDr. Robert LopezHohmann Elliptic Transfer Orbit with Animation
http://www.maplesoft.com/applications/view.aspx?SID=151351&ref=Feed
<p>Abstract<br /><br />The main purpose of this article is to show how to use Hohmann elliptic transfer in two situations:<br />a- When one manned spaceship is trying to catch up with an other one <br />on the same circular orbit around Earth.<br />b- When delivering a payload from Earth to a space station on a circular <br />orbit around Earth using 2-stage rocket .<br /><br />The way we set up the problem is as follows:<br />Consider two manned spaceships with astronauts Sally & Igor , the latter<br />lagging behind Sally by a given angle = 4.5 degrees while both are on the same<br />circular orbit C2 about Earth. A 2d lower circular orbit C1 is given. <br />Find the Hohmann elliptic orbit that is tangent to both orbits which allows<br />Sally to maneuver on C1 then to get back to the circular orbit C2 alongside Igor.<br /><br />Though the math was correct , however the final result we found was not !! <br />It was somehow tricky to find the culprit!<br />We have to restate the problem to get the correct answer. <br />The animation was then set up using the correct data. <br />The animation is a good teaching help for two reasons:<br />1- it gives a 'hand on' experience for anyone who wants to fully understand it,<br />2- it is a good lesson in Maple programming with many loops of the type 'if..then'.<br /><br />Warning<br /><br />This particular animation is a hog for the CPU memory since data accumulated <br />for plotting reached 20 MB! This is the size of this article when animation is <br />executed. For this reason and to be able to upload it I left the animation <br />procedure non executed which drops the size of the article to 300KB.<br /><br />Conclusion<br /><br />If I can get someone interested in the subject of this article in such away that he or <br />she would seek further information for learning from other sources, my efforts<br />would be well rewarded.</p><img src="/view.aspx?si=151351/Elliptic_image1.jpg" alt="Hohmann Elliptic Transfer Orbit with Animation" align="left"/><p>Abstract<br /><br />The main purpose of this article is to show how to use Hohmann elliptic transfer in two situations:<br />a- When one manned spaceship is trying to catch up with an other one <br />on the same circular orbit around Earth.<br />b- When delivering a payload from Earth to a space station on a circular <br />orbit around Earth using 2-stage rocket .<br /><br />The way we set up the problem is as follows:<br />Consider two manned spaceships with astronauts Sally & Igor , the latter<br />lagging behind Sally by a given angle = 4.5 degrees while both are on the same<br />circular orbit C2 about Earth. A 2d lower circular orbit C1 is given. <br />Find the Hohmann elliptic orbit that is tangent to both orbits which allows<br />Sally to maneuver on C1 then to get back to the circular orbit C2 alongside Igor.<br /><br />Though the math was correct , however the final result we found was not !! <br />It was somehow tricky to find the culprit!<br />We have to restate the problem to get the correct answer. <br />The animation was then set up using the correct data. <br />The animation is a good teaching help for two reasons:<br />1- it gives a 'hand on' experience for anyone who wants to fully understand it,<br />2- it is a good lesson in Maple programming with many loops of the type 'if..then'.<br /><br />Warning<br /><br />This particular animation is a hog for the CPU memory since data accumulated <br />for plotting reached 20 MB! This is the size of this article when animation is <br />executed. For this reason and to be able to upload it I left the animation <br />procedure non executed which drops the size of the article to 300KB.<br /><br />Conclusion<br /><br />If I can get someone interested in the subject of this article in such away that he or <br />she would seek further information for learning from other sources, my efforts<br />would be well rewarded.</p>151351Wed, 04 Sep 2013 04:00:00 ZDr. Ahmed BaroudyDr. Ahmed BaroudyMaple `Keyless` Base b Encryption Scheme
http://www.maplesoft.com/applications/view.aspx?SID=149026&ref=Feed
In this submission it will be shown that the convert/base built-in function can be used to create many new tools which can encrypt or decrypt any file selected. Such a tool, named Maple "keyless` base b encryption scheme, allows to determine the admissible number of elements of the set of ASCII decimals which will be present in the encrypted file, and to choose all the elements of this set.<img src="/applications/images/app_image_blank_lg.jpg" alt="Maple `Keyless` Base b Encryption Scheme" align="left"/>In this submission it will be shown that the convert/base built-in function can be used to create many new tools which can encrypt or decrypt any file selected. Such a tool, named Maple "keyless` base b encryption scheme, allows to determine the admissible number of elements of the set of ASCII decimals which will be present in the encrypted file, and to choose all the elements of this set.149026Mon, 01 Jul 2013 04:00:00 ZCzeslaw KoscielnyCzeslaw KoscielnyBase 64 "Keyless" File Encryption
http://www.maplesoft.com/applications/view.aspx?SID=145918&ref=Feed
Abstract: A "keyless" cipher not using complex mathematical formulas but applying non-linear transformations of base 64 encoding scheme has been described. The word "keyless" means that the encrypting/decrypting application itself fulfills the role of the secret key and should be carefully watched and stored. Presented tool is mainly suitable for cryptographic protection of e-mail enclosures.<BR>
<P>
Note: For proper functioning of this application, this application must be saved in a location with no spaces in the path name, e.g. C:\keyless.<img src="/applications/images/app_image_blank_lg.jpg" alt="Base 64 "Keyless" File Encryption" align="left"/>Abstract: A "keyless" cipher not using complex mathematical formulas but applying non-linear transformations of base 64 encoding scheme has been described. The word "keyless" means that the encrypting/decrypting application itself fulfills the role of the secret key and should be carefully watched and stored. Presented tool is mainly suitable for cryptographic protection of e-mail enclosures.<BR>
<P>
Note: For proper functioning of this application, this application must be saved in a location with no spaces in the path name, e.g. C:\keyless.145918Mon, 15 Apr 2013 04:00:00 ZCzeslaw KoscielnyCzeslaw KoscielnyGems 26-30 from the Red Book of Maple Magic
http://www.maplesoft.com/applications/view.aspx?SID=141091&ref=Feed
<p>In 2011, this column published five "Maple Magic" articles, each containing five "gems" gleaned from interactions with Maple and the Maplesoft programmers. Here are five more recent additions to the Red Book, every one of which contained something about Maple that was a surprise to me, experienced Maple user that I am.</p><img src="/view.aspx?si=141091/thumb.jpg" alt="Gems 26-30 from the Red Book of Maple Magic" align="left"/><p>In 2011, this column published five "Maple Magic" articles, each containing five "gems" gleaned from interactions with Maple and the Maplesoft programmers. Here are five more recent additions to the Red Book, every one of which contained something about Maple that was a surprise to me, experienced Maple user that I am.</p>141091Tue, 04 Dec 2012 05:00:00 ZDr. Robert LopezDr. Robert LopezObject-Oriented Programming in Maple 16
http://www.maplesoft.com/applications/view.aspx?SID=132199&ref=Feed
The Maple language is a full programming language designed for mathematical computation, combining the best principles from procedural, functional, and object-oriented programming. Maple 16 adds support for light-weight objects for enhanced object-oriented programming. Such objects integrate closely with Maple using operator overloading, making your objects almost indistinguishable from built-in Maple types. This example illustrates the use of light-weight objects.<img src="/view.aspx?si=132199/thumb.jpg" alt="Object-Oriented Programming in Maple 16" align="left"/>The Maple language is a full programming language designed for mathematical computation, combining the best principles from procedural, functional, and object-oriented programming. Maple 16 adds support for light-weight objects for enhanced object-oriented programming. Such objects integrate closely with Maple using operator overloading, making your objects almost indistinguishable from built-in Maple types. This example illustrates the use of light-weight objects.132199Tue, 27 Mar 2012 04:00:00 ZMaplesoftMaplesoftSpherical Pendulum with Animation
http://www.maplesoft.com/applications/view.aspx?SID=132143&ref=Feed
<p>Some years ago I have written a Maple document ( already on Maple's online) on the subject of animating a simple pendulum for large angles of oscillation. This gave me the chance to test Maple command JacobiSN(time, k). I was very much pleased to see Maple do a wonderful job in getting these Jacobi's elliptic functions without a glitch.<br />Today I am back to these same functions for a similar purpose though much more sophisticated than the previous one.<br />The idea is:<br />1- to get the differential equations of motion for the Spherical Pendulum (SP),<br />2- to solve them,<br />3- to use Maple for finding the inverse of these Elliptic Integrals i.e. finding the displacement z as function of time,<br />4- to get a set of coordinates [x, y, z] for the positions of the bob at different times for plotting,<br />5- finally to work out the necessary steps for the purpose of animation.<br />It turns out that even with only 3 oscillations where each is defined with only 20 positions of the bob for a total of 60 points on the graph, the animation is so overwhelming that Maple reports:<br /> " the length of the output exceeds 1 million".<br />Not withstanding this warning, Maple did a perfect job by getting the animation to my satisfaction. <br />Note that with only 60 positions of the bob, the present article length is equal to 11.3 MB! To be able to upload it, I have to save it without running the last command related to the animation. Doing so I reduced it to a mere 570 KB.<br /><br />It was tiring to get through a jumble of formulas, calculations and programming so I wonder why I have to go through all this trouble to get this animation and yet one can get the same thing with much better animation from the internet. I think the reason is the challenge to be able to do things that others have done before and secondly the idea of creating something form nothing then to see it working as expected, gives (at least to me) a great deal of pleasure and satisfaction.<br />This is beside the fact that, to my knowledge, no such animation for (SP) has been published on Maple online with detailed calculations & programming as I did.<br /><br /></p><img src="/view.aspx?si=132143/433082\Spherical_Pendulum_p.jpg" alt="Spherical Pendulum with Animation" align="left"/><p>Some years ago I have written a Maple document ( already on Maple's online) on the subject of animating a simple pendulum for large angles of oscillation. This gave me the chance to test Maple command JacobiSN(time, k). I was very much pleased to see Maple do a wonderful job in getting these Jacobi's elliptic functions without a glitch.<br />Today I am back to these same functions for a similar purpose though much more sophisticated than the previous one.<br />The idea is:<br />1- to get the differential equations of motion for the Spherical Pendulum (SP),<br />2- to solve them,<br />3- to use Maple for finding the inverse of these Elliptic Integrals i.e. finding the displacement z as function of time,<br />4- to get a set of coordinates [x, y, z] for the positions of the bob at different times for plotting,<br />5- finally to work out the necessary steps for the purpose of animation.<br />It turns out that even with only 3 oscillations where each is defined with only 20 positions of the bob for a total of 60 points on the graph, the animation is so overwhelming that Maple reports:<br /> " the length of the output exceeds 1 million".<br />Not withstanding this warning, Maple did a perfect job by getting the animation to my satisfaction. <br />Note that with only 60 positions of the bob, the present article length is equal to 11.3 MB! To be able to upload it, I have to save it without running the last command related to the animation. Doing so I reduced it to a mere 570 KB.<br /><br />It was tiring to get through a jumble of formulas, calculations and programming so I wonder why I have to go through all this trouble to get this animation and yet one can get the same thing with much better animation from the internet. I think the reason is the challenge to be able to do things that others have done before and secondly the idea of creating something form nothing then to see it working as expected, gives (at least to me) a great deal of pleasure and satisfaction.<br />This is beside the fact that, to my knowledge, no such animation for (SP) has been published on Maple online with detailed calculations & programming as I did.<br /><br /></p>132143Mon, 26 Mar 2012 04:00:00 ZDr. Ahmed BaroudyDr. Ahmed BaroudyCBC Mode Fast AES Directory Encryption/Decryption
http://www.maplesoft.com/applications/view.aspx?SID=129039&ref=Feed
<p>The application shows how to implement a Maple wrapper for a binary file executing the AES algorithm about 5 000 times faster than two Maple implementations of this algorithm published in Maple Application Center.</p><img src="/view.aspx?si=129039/CBCdirect_sm.jpg" alt="CBC Mode Fast AES Directory Encryption/Decryption" align="left"/><p>The application shows how to implement a Maple wrapper for a binary file executing the AES algorithm about 5 000 times faster than two Maple implementations of this algorithm published in Maple Application Center.</p>129039Fri, 23 Dec 2011 05:00:00 ZCzeslaw KoscielnyCzeslaw KoscielnyMaple User's Calendar Generators
http://www.maplesoft.com/applications/view.aspx?SID=129018&ref=Feed
<p>In the application the user-friendly interactive tool for creating calendars for any year has been presented. The application is an example of programming using strongly system dependent Components palette.</p><img src="/applications/images/app_image_blank_lg.jpg" alt="Maple User's Calendar Generators" align="left"/><p>In the application the user-friendly interactive tool for creating calendars for any year has been presented. The application is an example of programming using strongly system dependent Components palette.</p>129018Thu, 22 Dec 2011 05:00:00 ZCzeslaw KoscielnyCzeslaw KoscielnyBase64 Format Encoding/Decoding
http://www.maplesoft.com/applications/view.aspx?SID=128969&ref=Feed
<p>Base64 format is useful for encoding arbitrary binary information as, for example, *.exe files, encrypted messages, cryptographic keys, audio and image files, for transmission by electronic mail. The application applies the freeware executable published by John Walker (<a href="http://www.fourmilab.ch">http://www.fourmilab.ch</a>) and allows to encode list of bytes, containing arbitrary values, 0 including, to base64 string format and decode obtained string again into list of bytes. Similarly it is possible to encode/decode arbitrary files. File encoded to base64 format has original file name with the added extension *.b64. For safety reasons, name of the decoded file is the concatenation of an original file name and dash character (_).</p><img src="/applications/images/app_image_blank_lg.jpg" alt="Base64 Format Encoding/Decoding" align="left"/><p>Base64 format is useful for encoding arbitrary binary information as, for example, *.exe files, encrypted messages, cryptographic keys, audio and image files, for transmission by electronic mail. The application applies the freeware executable published by John Walker (<a href="http://www.fourmilab.ch">http://www.fourmilab.ch</a>) and allows to encode list of bytes, containing arbitrary values, 0 including, to base64 string format and decode obtained string again into list of bytes. Similarly it is possible to encode/decode arbitrary files. File encoded to base64 format has original file name with the added extension *.b64. For safety reasons, name of the decoded file is the concatenation of an original file name and dash character (_).</p>128969Mon, 19 Dec 2011 05:00:00 ZCzeslaw KoscielnyCzeslaw KoscielnyTracking Data in Maple
http://www.maplesoft.com/applications/view.aspx?SID=119105&ref=Feed
This application is partially inspired by the BMI tracker in Nintendo's WiiFit application. It could be easily used to track a weight loss goal, but could also be used to track other quantifiable goals. It also takes advantage of two new features in Maple 15, specifically the Finance package, and the DataTable document component.<img src="/view.aspx?si=119105/thumb.jpg" alt="Tracking Data in Maple" align="left"/>This application is partially inspired by the BMI tracker in Nintendo's WiiFit application. It could be easily used to track a weight loss goal, but could also be used to track other quantifiable goals. It also takes advantage of two new features in Maple 15, specifically the Finance package, and the DataTable document component.119105Thu, 21 Apr 2011 04:00:00 ZJohn MayJohn MayUsing Maple to Solve a Peg Board Puzzle Game
http://www.maplesoft.com/applications/view.aspx?SID=119107&ref=Feed
With the addition of Maple 15's new parallel multi-process features, and beefed up Grid Computing package, I was recently thinking about big examples that could show off how fast Maple can run on modern multi-core computers. My mind turned back to this toy game, and I wondered just how long it would take to find a solution in Maple.<img src="/view.aspx?si=119107/thumb.jpg" alt="Using Maple to Solve a Peg Board Puzzle Game" align="left"/>With the addition of Maple 15's new parallel multi-process features, and beefed up Grid Computing package, I was recently thinking about big examples that could show off how fast Maple can run on modern multi-core computers. My mind turned back to this toy game, and I wondered just how long it would take to find a solution in Maple.119107Thu, 21 Apr 2011 04:00:00 ZPaul DeMarcoPaul DeMarco