In this interview, Mark Meretzky talks about his presentation at Agile Development and Better Software Conference West 2014, how he feels about Android versus iOS, his favorite programming language to teach at New York University, and what language he thinks programmers should learn first.
Mark Meretzky will be presenting a presentation titled "Creating Android Apps in Java" at Agile Development Conference and Better Software Conference West 2014, which will take place June 1–6, 2014.
Mark Meretzky: Yeah, that's about it.
Cameron Philipp-Edmonds: All right, fantastic. Now since you're doing that presentation titled Creating Android Apps in Java can you tell us a little bit about the presentation?
Mark Meretzky: Well, we only have seven hours so you're not going to cover all of Android in seven hours. What I'd like to do is show them how to write an app that will launch itself, get itself up onto the screen, maybe display some text, some graphics, a circle or triangle. I'd like to make it touch sensitive in two ways. I'd like to show them how to make a button or some kind of control that will respond to a touch and I'd like to be able to respond to a gesture, a swipe, or a pinch or a spread or something like that. If we can get through that much then we're safe because with that material you can write a lot of interesting apps.
Cameron Philipp-Edmonds: Yeah, sounds like it.
Mark Meretzky: If there's time left over in the afternoon I want to do apps that display a series of data items say a table or drop down menu and if people are still going at 4:00 maybe we can have two apps that communicate with each other on the same phone.
Cameron Philipp-Edmonds: All right, very cool. In your presentation you also talk about three important design patterns involving views. What are views exactly? In brief, can you describe what these three patterns are?
Mark Meretzky: Oh, a view is an object that you can see on the screen. It's got a width and a height. It's got a foreground color and a background color. Everybody wants to make views because that's what you see but the more important objects are the invisible objects that underpin what you see on the screen. Things like a cursor object which provides item after item after item of data or an adapter that takes each of these items and encloses it inside of a view or an adapter view that takes all of these views and puts them up onto the screen. The infrastructure is more important than the views that you see on the screen but I know if I offer a lecture on what it's good for people to know rather than what people want to know no one's going to register for it so I have to compromise.
Cameron Philipp-Edmonds: You ask anyone who's attending the presentation to have a reading knowledge of Java. What elements or aspects should those new to Java make sure that they spend some extra time reading about before attending the presentation?
Mark Meretzky: Well, you would have to know how to create a class of objects. An object is a thing that has little variables inside of it called fields and an object contains chunks of code called methods and you have to be able to tell the object to execute its methods. In other words, all day long we're going to be calling methods and passing them arguments so I'm not going to do anything with bitwise exclusive or anything like that. I'm just going to be calling methods of objects. Very basic stuff.
Cameron Philipp-Edmonds: All right and your presentation is on creating Android apps. You don't have to make this into relation to iOS but what benefits or preferences have you found for creating Android apps that there are really over other types of apps?
Mark Meretzky: Well, the other types of apps are iOS apps. Is there a third competitor?
Cameron Philipp-Edmonds: Not that I know of no.
Mark Meretzky: I like Android apps better for two reasons. First, it's in a much more mainstream language Java. If you're writing an iOS app you have to learn Objective C and that language is only used for iOS and Macintosh. There's nowhere else where Objective C is used. Second, I think that Android apps are organized so much more sensibly. For example, from the very very beginning of Android they emphasized having two different apps cooperate with each other and in fact they even emphasized having individual sections of each app cooperate with individual sections of other apps and there's nothing like that in the iOS world. In fact at the very beginning of iOS you were only allowed to run one app at at time. Just like in the very early Macintosh back in 1984 you were only allowed to run one application at a time.
Android is so much better thought out and it's in a better language. It breaks my heart to say that iOS apps look better on the screen because the fonts are better, the animations are better, the human interface guidelines are more consistent. See under the hood the Android apps are better and it's just heartbreaking that they lose it at the very moment before the finish line. On the surface an iOS app looks better but it's all superficial.
Cameron Philipp-Edmonds: It's kind of like you have a really nice car and the Android apps underneath the hood are much stronger, much more efficient, but to the viewer the Apple apps, the iOS apps, are much sexier, sleek.
Mark Meretzky: Yeah, if I had to write a large complicated app of course I would rather write it for Android in Java but I admit that the animations, the transitions, are a little bit more finely tuned in iOS.
Cameron Philipp-Edmonds: You're a professor at New York University and you teach or taught several classes on programming languages [crosstalk 00:05:52].
Mark Meretzky: My title is something pathetic like Assistant Adjunct Associate part-time Professor. I'm not a real Professor.
Cameron Philipp-Edmonds: Do you have a favorite thing you teach?
Mark Meretzky: C++ by a long shot.
Cameron Philipp-Edmonds: Why is that?
Mark Meretzky: Well, programming is the art of building bigger things out of smaller things and ever since I learned to program back in 1978-1979 the way this has usually been done has been by having bigger functions calling smaller functions. Well, when I learned C++, especially when I learned about inheritance and templates, I was aware that C++ has completely different approaches to building bigger things out of smaller things. In C++ the primary way you do this is by building bigger data types out of smaller data types with templates and inheritance. It was a completely different way from the way I learned to program back in the 1970's and it was the first time it really struck me that the art had advanced since 1979.
Cameron Philipp-Edmonds: Is there a particular programming language that you think someone new to programming should start with or one of the first few languages that they should learn?
Mark Meretzky: I learned Basic and Fortran back in 1978 and my first reaction was to be amazed at how similar those two languages were. I wondered why they bothered to have two separate languages. That's ancient history. Nobody in their right mind would use those languages today.
Cameron Philipp-Edmonds: You have an interest in astronomy. Can you talk about how that interest has played a role in your career?
Mark Meretzky: Well, I used to operate a Planetarium in Yonkers, New York and it cost a lot of dollars to keep a Planetarium running for each minute. You need air conditioning. You need security guards. I used a software program called Celestia to speck out the show in advance so that I wouldn't have to turn on the dome and power up all of the amplifiers and everything like that. Have you ever used Celestia or heard of it?
Cameron Philipp-Edmonds: No, I have heard of it but I've never used it.
Mark Meretzky: It gives you drop dead gorgeous OpenGL graphics of the solar system from any point of view on the Earth or in outer space. You can move the camera, pivot the camera, fast forward, go backwards just by swiping with your mouse.
Cameron Philipp-Edmonds: Oh, cool.
Mark Meretzky: You can do this if you have nerves of steel and absolutely steady fingers and absolutely perfect sense of time but if you want to do it twice and repeat it exactly well there's a little known feature of Celestia that allows you to write a script that will drive the camera around the universe. Pivot the camera. Make it move backwards. It's written in the superset of the language Lua which I understand is primarily used for computer games. I'm fascinated by using scripts to drive this little Planetarium simulation and it ties in very well with my Unix background. I'm an old fashioned Unix guy from 1982.
Cameron Philipp-Edmonds: All right, fantastic. Now is there anything else you'd like to say to the delegates of Agile Development and Better Software Conference West before they [inaudible 00:09:04]?
Mark Meretzky: I'm going to put all of the examples that I do online and I'll give you now a link to where it goes to. Here I wrote it on a piece of paper. Is it visible?
Cameron Philipp-Edmonds: Yeah, it's visible. There we go.
Mark Meretzky: i5.nyu.edu/~mm64/android
I'm going to go on changing this down to the last minute. For example, the last release of Android was on March 21st and for all I know there's going to be another release of Android before June rolls around so I'm sure I'll change it down to the last minute but if you want to see the instructions for installing all of this Android stuff on your PC or on your Macintosh or on your Linux and if you want to see the examples that we're going to go over in those seven hours then this page has everything.
Cameron Philipp-Edmonds: Okay, fantastic. Once again this is Mark Meretzky and he'll be speaking at Agile Development Conference and Better Software Conference West 2014 which is June 1st through June 6th. If you haven't already sign up for his presentation titled Creating Android Apps in Java. Thank you so much Mark.
Mark Meretzky: Thank you.
About "Creating Android Apps in Java":As testers and test managers, we are frequently asked to report on the progress and results of our testing. The question “How is testing going?” may seem simple enough, but our answer is ultimately based on our ability to extract useful metrics from our work and present them in a meaningful way. This is particularly important in agile environments, where clear, concise, and up-to-date metrics are potentially needed multiple times per day. Mike Trites identifies a number of ways metrics can be used to measure progress during a test cycle and, ultimately, to determine when to consider testing complete. Learn the common pitfalls that metrics misuse can lead to and how you can avoid them by giving proper context when communicating metrics to your stakeholders. Take back key metrics for measuring the effectiveness of your testing and discover how to use what is learned on one project to improve your testing process on future projects.