development.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <?php
  2. $bodyclasses = 'development page';
  3. $title = 'Software development';
  4. $tagline = 'not black magic';
  5. $description = 'I design software and write code. Yes, I make apps.';
  6. $keywords = 'music, learning, tabletop, research, the open university';
  7. $twitter_image = 'images/phd-app-2x.jpg';
  8. ?>
  9. <?=i('_header')?>
  10. <article class="body grid grid-cols-1 sm:grid-cols-2 gap-x-6 gap-y-0">
  11. <section class="full col-start-1 sm:col-span-2">
  12. <p>I have been writing code for as long as I can remember &ndash; yes, that must have been around 1990, with my Amiga 500. It has been a long journey, and I learned a thing or two along the way.</p>
  13. </section>
  14. <section class="left col-start-1 col-span-1">
  15. <p>One of these is that the “<em>what languages do you know?</em>” question is largely irrelevant. Once you know a bunch of them, learning a new one is easy. The hard part is knowing how to attack a problem and solve it.</p>
  16. </section>
  17. <section class="right col-start-1 col-span-1 sm:col-start-2">
  18. <p><strong>Languages</strong> I know:</p>
  19. <ul>
  20. <li>experienced: C, C++(11, 14…), Objective-C, XML, HTML, TypeScript, PHP, Ruby, Pure Data, Processing</li>
  21. <li>familiar: Swift, JavaScript, Python, x86 and ARM assembly for system programming</li>
  22. <li>learning: R, Julia, Haskell</li>
  23. </ul>
  24. </section>
  25. <section class="left col-start-1 col-span-1">
  26. <p>Knowing languages is only a small portion of the job. You also need to know how to not <a href="//en.wikipedia.org/wiki/Reinventing_the_wheel">reinvent the wheel</a> all the time, how to design maintainable and scalable software architectures, and so on.</p>
  27. </section>
  28. <section class="right col-start-1 col-span-1 sm:col-start-2">
  29. <p><strong>Frameworks</strong> and other magic tricks:</p>
  30. <ul>
  31. <li>Qt, Cinder, openFrameworks</li>
  32. <li>Ruby on Rails, Sinatra</li>
  33. <li>React, Vue.js, Nuxt.js</li>
  34. <li>Arduino</li>
  35. </ul>
  36. </section>
  37. <section class="full col-start-1 sm:col-span-2">
  38. <p>I may be forgetting some technologies, but the bottom line is: <strong>it's no use knowing stuff if you don't know what it's used for</strong>.</p>
  39. <h2>Things I've done</h2>
  40. <p>Enough talk, let's see some of the projects I worked on over the years.</p>
  41. </section>
  42. <section class="project full col-start-1 sm:col-span-2 pb-3" id="project_circularbells">
  43. <section class="_right sm:float-right sm:w-1/2 sm:pl-1">
  44. <h3>Circular Bells</h3>
  45. </section>
  46. <section class="_left sm:float-left sm:w-1/2 sm:pr-2">
  47. <figure>
  48. <a href="#" data-featherlight="<?=$baseurl?>images/cb_demo-2x.jpg">
  49. <picture>
  50. <source srcset="<?=$baseurl?>images/cb_demo-2x.webp" type="image/webp" />
  51. <source srcset="<?=$baseurl?>images/cb_demo.jpg 1x, <?=$baseurl?>images/cb_demo-2x.jpg 2x" type="image/jpeg" />
  52. <img class="rounded" srcset="<?=$baseurl?>images/phd-app.jpg" alt="Circular Bells" />
  53. </picture>
  54. </a>
  55. </figure>
  56. </section>
  57. <section class="_right sm:float-right sm:w-1/2 sm:pl-1">
  58. <p>Circular Bells is a music app that for kids and grown ups to sit back and relax while playing with its brightly-coloured, ever-changing interface, and uplifting sounds.</p>
  59. <p><strong>Technologies</strong>: C++, Cinder, iOS.</p>
  60. <p><a href="//itunes.apple.com/us/app/circular-bells/id1062362784?mt=8"><strong>App Store</strong></a> | <a href="//www.youtube.com/watch?v=a_GSQNIT7xM"><strong>Demo</strong></a></p>
  61. </section>
  62. </section>
  63. <section class="project full col-start-1 sm:col-span-2 border-t-2 pb-3" id="project_phdappios">
  64. <section class="_left sm:float-left sm:w-1/2 sm:pr-1">
  65. <h3>PhD music app for iPad</h3>
  66. </section>
  67. <section class="_right sm:float-right sm:w-1/2 sm:pl-2">
  68. <figure>
  69. <a href="#" data-featherlight="<?=$baseurl?>images/phd-app-2x.jpg">
  70. <picture>
  71. <source srcset="<?=$baseurl?>images/phd-app.jpg 1x, <?=$baseurl?>images/phd-app-2x.jpg 2x" />
  72. <img class="rounded" srcset="<?=$baseurl?>images/phd-app.jpg" alt="PhD app for iPad" />
  73. </picture>
  74. </a>
  75. </figure>
  76. </section>
  77. <section class="_left sm:float-left sm:w-1/2 sm:pr-1">
  78. <p>In 2014, I needed to bring the app below with me to a conference for demos. I figured pretty soon that I was not going to bring the giant screen with me, so I did an iOS port which worked wonderfully. No, you can't have it. Yet. I'm designing a new version. You can have that once it's ready.<p>
  79. <p><strong>Technologies</strong>: C++, Cinder, iOS.</p>
  80. <p><a href="//www.github.com/Morpheu5/SecondStudy-iPad"><strong>Source code</strong></a></p>
  81. </section>
  82. </section>
  83. <section class="project full col-start-1 sm:col-span-2 border-t-2 pb-3" id="project_phdapp">
  84. <section class="_right sm:float-right sm:w-1/2 sm:pl-1">
  85. <h3>PhD music app</h3>
  86. </section>
  87. <section class="_left sm:float-left sm:w-1/2 sm:pr-2">
  88. <figure>
  89. <a href="#" data-featherlight="<?=$baseurl?>images/table_2-2x.jpg">
  90. <picture>
  91. <source srcset="<?=$baseurl?>images/table_2.jpg 1x, <?=$baseurl?>images/table_2-2x.jpg 2x" />
  92. <img class="rounded" srcset="<?=$baseurl?>images/table_2.jpg" alt="PhD app for large tabletop" />
  93. </picture>
  94. </a>
  95. </figure>
  96. </section>
  97. <section class="_right sm:float-right sm:w-1/2 sm:pl-1">
  98. <p>As part of my doctoral studies, I developed a collaborative music composition tabletop application to teach people how to compose and discuss melodies.</p>
  99. <p><strong>Technologies</strong>: C++, Cinder, Pure Data.</p>
  100. <p><a href="//www.github.com/Morpheu5/FourthStudy"><strong>Source code</strong></a> | <a href="//www.youtube.com/watch?v=AONzmnAHZ6w"><strong>Demo</strong></a></p>
  101. </section>
  102. </section>
  103. <section class="project full col-span-2 border-t-2 pb-3" id="project_aranaboo">
  104. <section class="_left sm:float-left sm:w-1/2 sm:pr-1">
  105. <h3>Aranaboo</h3>
  106. </section>
  107. <section class="_right sm:float-right sm:w-1/2 sm:pl-2">
  108. <figure>
  109. <a href="#" data-featherlight="<?=$baseurl?>images/aranaboo-2x.jpg">
  110. <picture>
  111. <source srcset="<?=$baseurl?>images/aranaboo.jpg 1x, <?=$baseurl?>images/aranaboo-2x.jpg 2x" />
  112. <img class="rounded" srcset="<?=$baseurl?>images/aranaboo.jpg" alt="Aranaboo" />
  113. </picture>
  114. </a>
  115. </figure>
  116. </section>
  117. <section class="_left sm:float-left sm:w-1/2 sm:pr-1">
  118. <p>A game of peek-a-boo using face detection.<p>
  119. <p><strong>Technologies</strong>: iOS.</p>
  120. <p><a href="//www.beyoucompany.com/?page_id=8"><strong>Web site</strong></a></p>
  121. </section>
  122. </section>
  123. <section class="project full col-start-1 sm:col-span-2 border-t-2 pb-3" id="project_astronauta">
  124. <section class="_right sm:float-right sm:w-1/2 sm:pl-1">
  125. <h3>Da grande voglio fare l'astronauta</h3>
  126. </section>
  127. <section class="_left sm:float-left sm:w-1/2 sm:pr-2">
  128. <figure>
  129. <a href="#" data-featherlight="<?=$baseurl?>images/astronauta-2x.jpg">
  130. <picture>
  131. <source srcset="<?=$baseurl?>images/astronauta.jpg 1x, <?=$baseurl?>images/astronauta-2x.jpg 2x" />
  132. <img class="rounded" srcset="<?=$baseurl?>images/astronauta.jpg" alt="Da grande voglio fare l'astronauta" />
  133. </picture>
  134. </a>
  135. </figure>
  136. </section>
  137. <section class="_right sm:float-right sm:w-1/2 sm:pl-1">
  138. <p>An interactive book for children. The tale of a kid who wants to become an astronaut. I developed the iOS part of the project to completion, but sadly the app was never released.</p>
  139. <p><strong>Technologies</strong>: iOS.</p>
  140. <p><a href="//www.behance.net/gallery/1201947/DA-GRANDE-VOGLIO-FARE-LASTRONAUTA-(-IPAD-APP)"><strong>Behance</strong></a></p>
  141. </section>
  142. </section>
  143. <section class="project full col-start-1 sm:col-span-2 border-t-2 pb-3" id="project_bsc">
  144. <section class="_left sm:float-left sm:w-1/2 sm:pr-1">
  145. <h3>CRUSADE Bleeding Score Calculator</h3>
  146. </section>
  147. <section class="_right sm:float-right sm:w-1/2 sm:pl-2">
  148. <figure>
  149. <a href="#" data-featherlight="<?=$baseurl?>images/bsc-2x.jpg">
  150. <picture>
  151. <source srcset="<?=$baseurl?>images/bsc.jpg 1x, <?=$baseurl?>images/bsc-2x.jpg 2x" />
  152. <img class="rounded" srcset="<?=$baseurl?>images/bsc.png" alt="CRUSADE Bleeding Score Calculator" />
  153. </picture>
  154. </a>
  155. </figure>
  156. </section>
  157. <section class="_left sm:float-left sm:w-1/2 sm:pr-1">
  158. <p>This app helps clinicians estimate a patient's baseline risk of in-hospital major bleeding during both ST and non-ST segment elevation myocardial infarction. Not that I know what that means. I was given a spreadsheet with some formulas, I was asked to make an iOS app, and so I did. Then the client did not want it anymore, so I published it myself.</p>
  159. <p><strong>Technologies</strong>: iOS (Swift), Android (Kotlin).</p>
  160. <p><a href="//itunes.apple.com/us/app/crusade-bleeding-score-calculator/id454062627?mt=8"><strong>App Store</strong></a>, <a href="//play.google.com/store/apps/details?id=net.morpheu5.bleedingscorecalculator"><strong>Google Play</strong></a></p>
  161. </section>
  162. </section>
  163. <section class="project full col-start-1 sm:col-span-2 border-t-2 pb-3" id="project_doodle">
  164. <section class="_right sm:float-right sm:w-1/2 sm:pl-1">
  165. <h3>Doodle</h3>
  166. </section>
  167. <section class="_left sm:float-left sm:w-1/2 sm:pr-2">
  168. <figure>
  169. <a href="#" data-featherlight="<?=$baseurl?>images/doodle-2x.png">
  170. <picture>
  171. <source srcset="<?=$baseurl?>images/doodle.png 1x, <?=$baseurl?>images/doodle-2x.png 2x" />
  172. <img class="rounded" srcset="<?=$baseurl?>images/doodle.png" alt="Doodle" />
  173. </picture>
  174. </a>
  175. </figure>
  176. </section>
  177. <section class="_right sm:float-right sm:w-1/2 sm:pl-1">
  178. <p>I worked on the actual Reactable between 2008 and 2009, proposing a new approach to Western tonal music &ndash; the original support was quite minimal, I was tasked with making it a bit more usable.</p>
  179. <p><strong>Technologies</strong>: C++, <a href="//www.qt.io">Qt 4</a>, <a href="//www.jackaudio.org">Jack</a>.</p>
  180. <p><a href="//www.github.com/Morpheu5/Doodle"><strong>Source code</strong></a> | <a href="//vimeo.com/4325822"><strong>Demo</strong></a></p>
  181. </section>
  182. </section>
  183. <section class="project full col-start-1 sm:col-span-2 border-t-2" id="project_tofus">
  184. <section class="_left sm:float-left sm:w-1/2 sm:pr-1">
  185. <h3>tOfuS: the Framework OS</h3>
  186. </section>
  187. <section class="_right sm:float-right sm:w-1/2 sm:pl-2">
  188. <figure>
  189. <a href="#" data-featherlight="<?=$baseurl?>images/tofus-2x.jpg">
  190. <picture>
  191. <source srcset="<?=$baseurl?>images/tofus.jpg 1x, <?=$baseurl?>images/tofus-2x.jpg 2x" />
  192. <img class="rounded" srcset="<?=$baseurl?>images/tofus.jpg" alt="tOfuS" />
  193. </picture>
  194. </a>
  195. </figure>
  196. </section>
  197. <section class="_left sm:float-left sm:w-1/2 sm:pr-1">
  198. <p>Yes, there was a time when I worked on a toy operating system. It was good fun and I learned a lot about assembly code and bare-metal programming.</p>
  199. <p><strong>Technologies</strong>: x86 assembly, C.</p>
  200. <p><a href="//www.github.com/Morpheu5/tOfuS"><strong>Source code</strong></a></p>
  201. </section>
  202. </section>
  203. <section class="full col-start-1 sm:col-span-2">
  204. <p class="calltoaction">Have a cool project in mind? <a href="<?=$baseurl?>contact">Let's talk about it!</a></p>
  205. </section>
  206. </article>
  207. <?=i('_footer')?>