Hacker News new | comments | show | ask | jobs | submit login
App Inventor for Android - Android Software Development for Everyone (googlelabs.com)
172 points by talbina 2342 days ago | hide | past | web | 72 comments | favorite

All of the people hand-wringing over the possibly of amateur developers making crappy apps for mass-distribution are missing the point.

This isn't a tool for allowing non-programmers to develop apps for mass sale/distribution (although I'm sure there will be plenty of that). This is a tool for allowing non-programmers (like me!) to create tools for a mobile platform to make our own custom apps to fulfill our own niche needs.

This could be huge - yeah, I'm sure the apps won't be as polished, fast, or optimized as an app written in the native language and using the native API's, but I'm a professional mechanical/acoustical engineer who spends my time working on my job and I don't have the time (or inclination) to learn to be a software engineer/programmer. Similarly, programming my own DSP filter in C would probably result in a more efficient analysis tool, but Matlab/Octave gets the done while allowing me to concentrate on my engineering projects rather than dealing with memory management, etc. Don't look at it as a developer's tool, it's a high-level RAD environment like VB, Excel, etc.

Now of course the proof is in the pudding and we'll have to see how it works in the real world. I will say that I'm a current Nokia smartphone user who has been sitting out the iOS/Android war, but if if App Inventor works well, Google will have brought me over to the Android camp.

Thanks, this community is too crowded by hip programmers, and iFanbois to realize there is world outside. This is the exact reason why windows won over, windows allowed cheap hardware and throwaway easy programming using visual basic. If app inventor succeeds there could be a serious market for cheap android devices (~150$) which could be programmed easily.

The whole App Store is a sordid tale, and the good Apps will always beat crappy apps by marketing. But if i do wish to have an App specifically tailored for my group then why the fuck do i need to conform to requirements of Apple?

I used to play with scratch to test it out. I really like it - it is a real programming language, but the big difference is that the blocks tell you all the options you can do while a text editor only shows you white space. The blocks also enforce syntax (prevent spelling/usage errors) and allow you to witness the execution of the program step-by-step (see how your program runs).

I think most of the mental barriers and frustrations of learning a new programming language is not knowing what you can do with it, not knowing the right syntax, or not knowing what the program is doing during execution - the block interface removes most of these problems while still preserving a programmer's mindset. Hopefully this will convince some of the 'hardcore' programmers that it is a legitimate language, even if developing with it is a bit slower than typing.

I haven't played with it for a while - they were planning to add function blocks, but I don't know if they did.

Also - lots of kids actually have played with scratch. If you look at the website, there are 1.1 million projects and 150,000 members. So - this next generation is really poised to make this platform their own. Maybe it will be their TI-83?

There has been a lot of academic interest in doing something like this for Java, generally with a pitch like "If we took all the scary syntax out of it, programming would be accessible to $GROUP_OF_INTEREST." My personal opinion is that, with the debatable exception of Microsoft Excel, every project along these lines seems to rediscover "Oh yeah, syntax is rather useful for doing non-trivial work" roughly forty five seconds after the conclusion of their most advanced published tech demo.

True, but the goal here is not necessarily "make programming more accessible".

The goal is "make it possible to create an app with NO programming knowledge".

The ability to create "trivial" apps and then run them on your cell phone can be exciting for many people. I think this will increase the appeal of Android as a consumer device. Of course, a big flood of trivial (tool-created) apps in the Android market may reduce some of that appeal, but overall, this seems like a good move by Google.

It will be interesting to see if more people buy Android phones because they can now create and run their own apps on their phones

Making apps is programming - you can make it more accessible, but "programming" is still a good definition of the activity. Making programs with no programming knowledge sounds about as useful as driving forklift trucks with no forklift-truck-driving-knowledge.

There have been visual app generators before, for other platforms. None of them took the world by storm, and mostly were very limited and/or actually quite hard to learn - different from regular programming languages, but still with a learning curve. The devil's in the details, and a good programming language "makes easy things easy and hard things possible". App generators often succeed very well at the "makes easy things easy" part but fail at the "make hard things possible" bit.

Phones are a bit different though.

On the Internet, we saw a lot of 'personal home pages' which were basically globally accessible bookmark menus.

Those had limited utility because they were public and only available when on-line.

By comparison something as 'easy' as Frontpage would be great for making a personal single-purpose app for your phone. It doesn't have to do a great deal to be useful - perhaps it would just show the RSS feed from your school events society. Maybe it would just make a ping sound when you touched the screen, or be a really simple game just for the fun of it.

If we are talking about 15 minutes of setup and build time then the apps really don't have to do much, and they only have to be useful to one person to get made. But it makes owning the phone much more interesting to people who are a bit geeky but don't code, which is important for Google.

(Compare to the iPhone - where the easiest option is to set up a web server and build a single-purpose web site. That's easy for us but for a 10 year old it's a huge barrier.)

Excel is one of the most widely used programming environments out there, and it's pretty visual.

It is, but scratch the surface and you're in a world of macro syntax ugliness. Conventional programming languages are better than that. "NO code" yeah right. And that's not even the "hard stuff" that can't be done in excel.

you dont write an OS in GWBasic, but it sure does makes you interested in CS, rather than just watching some stupid crap on itunes


That does not look like no programming knowledge to me.

Has anyone ever actually demonstrated that a "visual" programming language is easier for non-programmers to learn programming than a language with a relatively simple syntax, like Python? How is that picture significantly easier to understand than

    when Button1.click:
        Screen1.BackgroundColor = Blue

One big problem with textual programming is that there are too many places syntax errors can creep in. Lots of 'mundanes', i.e. non-hackers are so used to flexibility with little things like text, punctuation, spacing and capitilization. The rigity that programming languages require would make most programmes written by these people riddled with syntax errors.

Graphical programming removes choices and options. However it also removes ways to make mistakes.

Same reason most people prefer point-and-click games to text adventures. With text it's not obvious what to write next. With a GUI, you can roam around clicking on things until you spot something that looks sensible - it's like Lego. Additionally, you don't have to worry about making typos and not discovering them until compile time.

Code is only a means to an end. If you can achieve the result you want without it, then it's just an obstruction.

All of what you are talking about is majorly dependent on the field of development and the tools currently available. Python isn't available or practical for everything.

Try this: http://quickfuseapps.com/app/edit

It's for building voice apps, and believe me, it's easier to learn than anything in the space (VoiceXML, random proprietary APIs, etc.)

Java isn't necessarily easy to learn, and that's all that Android has right now.

Well, for one, the shape (and colors) of the blocks can inform the user what can and can't fit into the arguments of a function (can't put the pieces with square pegs into the functions with round holes). Or, in your case, what sorts of values can be assigned; the attributes that use colors look different than the ones that need a date and time. Also, the blocks can make it clear where something necessary is missing in the program. Nothing that a good IDE can't do, but all that and more just for the cost of some color coded puzzle pieces.

Isn't this exactly what Mindstorms uses as it's primary 'programming' tool?


This is going to be huge.

From the NYTimes:

"A program by a nursing student at Indiana University enabled a phone to send an emergency message or make a call, if someone fell. It used the phone’s accelerometer to sense a fall. If the person did not get up in a short period or press an onscreen button, the program automatically texted or called the person designated to receive the alert. "

"For example, one student made a program to inform a selected list of friends, with a short text message, where he was every 15 minutes. The program was created by putting three graphic code blocks together: one block showed the phone’s location sensor, another showed a clock (which he set for 15-minute intervals), and third linked to a simple database on a Web site, listing the selected friends. "


A program ... enabled a phone to send an emergency message or make a call, if someone fell. It used the phone’s accelerometer to sense a fall. If the person did not get up in a short period or press an onscreen button, the program automatically texted or called the person designated to receive the alert.

The text above, quite adequately describes the functionality of the app. If someone gave a programmer the above description, the programmer would have enough information to write the "backend" code for the app and leave the UI and details (like the length of time before sending the text message) to be filled in later. It's sort of a shame that you have this two-sentence sufficient description of the app and then need to spend months to create the code to implement what took you 10 seconds to describe.

This question may need its own thread, but I always wondered if there would come a day when you could describe an app like the one above, in English, and a "compiler" would create the program for you, leaving you to decide things like themes, button locations, etc.

I call this artificial intern-level-intelligence: You describe the app in English, and the intern (or AI intern) creates the code, and asks questions about details like the theme, the images, the length of time before the program sends the text message, etc.

Do you guys think computers will ever get close to artificial intern-level-intelligence?

I used it and watched high school students use it for a couple of hours/week over a period of 8 weeks (varying degrees of technical expertise, in an entrepreneurship mentorship program with an end goal of the students building their own apps) and found that while the easy access to phone functions is pretty cool, it's still very limited and clearly aimed at non-programmers (think scratch).


- lots of powerful features that make necessary mobile app features (e.g. "pull up your contacts list!") super easy

- "puzzle piece" logic building inside app inventor is really easy to understand (ish), and pretty well done

- the process* is easy for non-programmers to do / understand / see in action


- how difficult it is to go beyond app inventor's available functions, if you know exactly what you want to do, or how you would do it if you could just pull up code (e.g. it's really hard / awkward right now to have multiple "screens" in an app)

- the android "look" in general, and the strict limitations of app inventor wrt visual styling

- the emulator is, unfortunately, _not_ easily accessible for non-programmers

- everything runs inside a java vm, and generally feels a little cumbersome

- the process* is slow and full of 30-second chunks of lost time

* process: make changes to the program -> "package" the app -> take a photo of the generated QR code -> download and install the app -> test your changes on the phone

Is it possible to use generator to stub out an app and then work on the generated source? I would love something like that as an gateway to app development as a developer w/o much previous Android/Java experience.

Letting grade schoolers write software that runs on their phones could influence more people to build an interest in computer science, even before they understand exactly what CS is about.

It could be this generation's C-64 equivalent. I have fond memories of whiling away hours of time in C-64's Basic.

I am not sure. I've learned programming on the C64 when I was 12 years old. I used Basic. On the other hand a friend of mine used a so called 'game maker' to create games. His games (which he created without programming) looked much more professional than what I wrote in Basic. In fact he had to configure so much things, that it was overwhelming to me, so he was a king in my eyes. But unfortunatelly he never learned to program and I bacame a software developer. I think a Logo interpreter or something which has something to do with creating algorithms is a better tool for a child to start. A tool like this does not teach what is the most interesting if someone really has affinitiy to programming: algorithmic thinking.

When I watch my niece gleefully play with sand, dirt, and water, I love it because she is as engaged or even more focused then when she is watching some Nick Jr. show.

I think the new Google tools are an important first step from pre-teens mindlessly playing/texting with their mobile devices (consuming) to making something, even if it is a toy app (producing). And maybe they'll get a bit of the ego boost that comes from making something other people like/want. Maybe it will become cool to make your own little apps. Imagine if Seventeen magazine had a monthly contest for best app. This could be more than a technological shift, this could be a shifting of cultural attitudes towards programming / IT at the subsurface, tectonic level.

As for teaching logic, I think it really comes down to how the person is wired internally. Some people just think that way.

Something struck me about the visual programming language used here after looking at it for a few minutes: it's Lisp.

It doesn't have parens, of course, and sometimes the blanks on the blocks are positioned so that arithmetic appears to be infix, but it's most certainly Lisp. It would be trivial to create a 1:1 mapping between the visual representations and s-expressions. My guess is that behind the scenes, that's exactly what's going on.

After this realization, I noticed that Hal Abelson is involved in the project: http://googleresearch.blogspot.com/2009/07/app-inventor-for-...

The visual editor builds on Scratch which is somewhere between Logo and Smalltalk. The compiler is based on Scheme.

From the article:

"The blocks editor uses the Open Blocks Java library for creating visual blocks programming languages. ... Open Blocks visual programming is closely related to the Scratch programming language, a project of the MIT Media Laboratory's Lifelong Kindergarten Group...

The compiler that translates the visual blocks language for implementation on Android uses the Kawa Language Framework and Kawa's dialect of the Scheme programming language..."

Language overviews:



I saw this on twitter this morning and noticed a glaring similarity in the GUI design and that of MIT's SCRATCH programming language geared at teaching children how to program. They both utilize the concept of visually displaying code segments as "building blocks" which fit together like puzzle pieces to give a visual representation of whether or not code will work.

I commend the approach to get more parties interested in programming and mobile web application development. Perhaps this opens up a whole new world of potential for getting mobile applications development into the classroom at a very young age. On the downside, we might end up with an influx of even crappier Android applications in the market. I already have a hard enough time filtering through the craplications as it is.

Here's the link to SCRATCH for those unaware:


Now that you mention it, yes, it does resemble SCRATCH, and I would also suggest Lego Mindstorms programming environment.

I am showing my age, when I admit that my initial reaction was to note the similarity with Novel's AppWare circa 1995. ( http://support.novell.com/techcenter/articles/dnd19940502.ht... ) Appware, like Scratch, took a modular approach of assembling software building blocks and connecting the output of one to the input of the other, dealing with triggers, events, etc. As a programmer coding to native APIs (WinAP and MacOS, in C++) I found AppWare to be an adequate and fun prototyping tool, useful for quickly testing an idea or stringing together a quick & easy widget to solve a basic problem. Even moreso, considering it was a cross-platform (MacOS & Windows 3.0) system, which was novel for that time period. However, when it came time to build a full-featured application to deliver to others, in my experience Appware fell short. I suspect I'd feel the same way about this tool for Android but I'm willing to give it a shot.

I suspect that much of the HN readership feels the same, but we are quite the minority, and this tool is designed to address the needs of what my non-programmer wife charmingly refers to as "normal people" -- non-hacker people who don't really care how things work, but instead use the device as a tool in order to get on with their lives rather than a means unto itself.

read the description they have credited MIT in the section Standing on Shoulders of Giants.

also about flooding app store with crappy Apps. A good quality app will standout by reviews/word of mouth and Advertising.

Sad how Apple makes people idiots

The last third of the linked page is devoted to giving credit to work that they built upon, including MIT's Open Blocks, Scratch and Logo, as well as GNU Kawa.

So Google repurposed Scratch. Looks great. I concur with the remarks stating programming ought to be the new literacy. I am a fledgling programmer (just getting my feet wet with Python and Django) but i installed Scratch on my daughter's computer. She's six so a little too young to really get it but she plays around with it from time to time and sadly at times it seems like she's almost on par with my skills with Python.

This tool is awesome.

You can write an app that periodically texts "missing you" to your loved ones

Just remember to disable it if you ever see them in person again. Could get awkward. Anyway, it's nice to see these platforms getting more accessible to non-developers. It's always been off putting to me when learning a language just how difficult it is to get some tangible results. It's a huge uphill battle if you're just approaching it as a hobby or learning experience. Depending how quickly you hit the celling of this platform it could inspire people. I'd like to see some combination of Interface Builder and OSX's Automator on the iPhone platform.

The motivation for the design of COBOL, in part, was similar. The thinking was, "Oh, programming is too hard for accountants. Let's design a language that they can use". Well, some accountants did pick it up, but they became programmers and many didn't do accounting any more.

Perhaps Google will have better luck, but I can't remember a time since COBOL first tried this that some effort hasn't been ongoing to do just that. Anyone remember Fifth Generation Languages? And before that Fourth Generation Languages, or 4GL?

This is excellent. I'm not really all that psyched about android but this is a great way to bust out proof of concepts, prototype, and useful one off apps. As a programmer nothing sucks more than getting deep into development than stopping halfway through, wasting days and hours, because you realized that what you envisioned wasn't going to work anyway.

It's also a good way to teach the basics of programming and OOP, which frankly a lot of programmers still can't grasp. In 2010 no less!

I'm not worried. Web designers are still doing fine, and WYSIWYG is everywhere.

At the end of the day MOST people don't want to create their own apps for their own needs, they want to pay $0.99 and be done with it.

Here's the difference:

Real programmers don't see programming as work. It's a hobby, it's fun, and spending 20 hours on a small app isn't a waste of time or money. It's worth every second. I stay up until the wee hours of the night writing my Android apps because I love it. Every programming problem is a puzzle, and when I'm done I feel accomplished and pleased.

Joe-non-programmer sees this 20 hours as time and money lost. They could have been playing with their kids, or working their real job making money. They could be watching a baseball game or playing video games, or spending time with friends. If something is out there for $0.99 then there is no way in hell they will spend any time making their own apps. It's as undesirable as fixing the leaky facet that's been leaking for 6 months.

It's for the guy who likes to tinker, or the student with a ton of time on their hands and they aren't worried about making money anyway.

If anything - there may be more crappy apps in the Market, but it will require real developers to step up their game to get noticed amidst the garbage.

This is not about Apps. This is about people.

When running for President JFK gave people buttons, had them run call centers and letter campaigns, and anointed them block leaders. Many people think the sole value was what these people produced (letters, phone calls, pamphlets etc), but at least as much it was making the people themselves strong Kennedy advocates. It gave people a chance to be involved and stand for something; they became strong unpaid advocates that had influence on and access to their personal network of family in friends in a way no radio spot or ad in the paper could possibly rival. That's how "the establishment" starts a grassroots movement.

How does this relate to Google? Beyond the mass appeal of any power-to-the-people message, if you write your own app (and even just knowing that you could), even if it's shit (and most of these will be), you feel like you're on the Team Google. This is just one more brilliant way Google is building itself into a ubiquitous, and well received, cultural force.

To those who are bickering about how this in not optimial programming and how give me my GWBasic. Read the whole page before commenting. It is a project of Harold Abelson, the Co-Author of SICP,

The idea of a graphical programming environment is interesting, but I have never seen one that is good.

I used LabView in college and it was okay. I interact with another graphical programming environment in my current contract and I hate it. I probably wouldn't hate it if I didn't know how to read and write code.

I don't see these things as good training wheels either. They obfuscate the details that are required to be a good programmer. It would probably be more daunting to a newcomer to lift up the hood and see miles of code that they can't easily relate to the graphical version.

Im skeptical, but if it does create more interest in the platform, that is a good thing.

these systems are designed for people who don't have the option of using regular written programming languages. they are not intended to be training wheels either. they are for making programming more accessible.

I would argue that programming is very accessible. All languages in use today can be obtained and learned for free, save for ones time.

I would agree that these environments make programming easier and more approachable.

it's worth pointing out that not only does apple not have an app like this but they have actively prohibited anything like it.

remember when they appealed to the education market?

Not only did they theoretically forbid it, they actually took something very close to this out of the app store: this app maker is based on Scratch and there used to be a Scratch player for the iPhone (it wouldn't let you create Scratch programs on the iPhone, but it would let you run ones you had made on your computer) and Apple removed it from the App Store.

Now support extensions written in Java, that you can sell in the Android Market, and kaboom - middleware explosion.

A lot of Visual Basic's success was the ability to buy components that were easily hooked into your programs.

How do revolutions begin? How do tipping points start? Here is a clue: http://www.youtube.com/watch?v=8ADwPLSFeY8

So someone sees that, creates their own. Shows it to a friend. "Ooh, I want to do that for my cat too!" And since that person is just about to buy a new phone, they go and get one with Android. Then that person shows a friend their own new kitty "app" and that person who is getting a new phone ... repeat.

Everyone looks for a great big downpour instead of a light rain to change everything.

Although this isn't going to replace programming by any means, I think its a really cool idea to get people interested in app development. Obviously, the next step for them should then be to learn some real programming, but a lot of people are never going to get to that second step if there isn't some easy way for them to build that first app, without any prior experience. This is especially true for younger kids who have a great idea and don't know where to take it.

So is Google now going to have a toy-app contest, like they did originally for real Android apps?

Jokes aside, I guess I'm a bit skeptical about these pseudo-developement envirnoments. It's a nice concept to demo but does it realy have any practical applications in real world? I mean, really practical, something that people create not just because they can, but because they need it.

What's wrong with creating things just because you can?

I remember two decades ago when I used to program using QBASIC as a 6 year old. I didn't need any of the applications I made - but it sure looked like fun.

This new Google initiative might not be about general masses, but more aimed at helping children with their creative processes.

I didn't mean it's wrong to create things just because you can. I do it all the time, and learned pretty much everything I know this way.

Totally agree it's a great thing for educational purposes, I was just questioning if it can be considered as something more than an educational tool.

The problem with attracting "developers" with a limited skillset is you're asking for low quality applications.

I'm not against the idea, and if this kind of tool attracted people who care deeply about human factors, interaction and graphics design I'd in fact be totally in favor of it.

But this doesn't look like much more than Visual Basic or, as Gruber put it, Hypercard.

But Visual Basic (and VBA) revolutionized the way people used computers and was one the main killer apps on Windows. Most people, given a choice between an ugly app that does exactly what they need and a beautiful app that doesn't do exactly what they need, will choose the ugly app. And what better way to make sure an app does exactly what you need than to write it yourself.

Sure Visual Basic programs written by non-programmers are often a monstrosity in every way and most of us no doubt have our share of horror stories. But the point is that most of those monstrous apps actually work and solve a real world problem, and had they sat around and waited for a programmer to come along and solve their problem correctly they'd probably never get their program.

I think this is best suited as an entry level tool, then when someone wants to progress to code to do some things they need to make it easy to start. An example of what not to do would be net beans, which allows you to create a drop and drag UI fairly easily but creates a mess of code if you actually want to customise it later.

Come on, Google. Software development is not for everyone. Making it easy for amateurs to write crappy HelloPurr apps brings no good to the Android eco-system. Focus on building a mobile platform that attracts more professional developers, please.

What would that statement have looked like 20 years ago? 40? 10?

"Come on PHP, web development is not for everyone. Making it easy for amateurs to write crappy dynamic web sites brings no good to the web"

And, yeah, PHP has made a lot of crappy things possible. But some of those crappy things go on to become good things, and wouldn't have been possible had it not been so easy to get started.

But, it should be! Programming ought to be the new literacy, and the phone, which many already have, is an excellent platform to get started.

Sure, their approach might be amazingly ignorant of history, but you can't fault them for trying.

I think if the apps were made then not put on the market then all would be good, otherwise there will be huge software quality dilution problems. The android market already has enough of a hurdle to jump over because of the countless "Hey, lets try out the android platform and make a few bucks" apps out there.

There are loads of simple programmes on Android/iPhone that are popular (e.g. Fart apps). Simple apps aren't always bad, sometimes they are just what people want. This tools allows the creation of certain kinds of programmes that people want. This is a good thing.

So true. Last weekend I've been hunting for a 1x1 battery status widget. This is (in its basic form) a 'hello world' type of application, so there are maybe 20 or 30 different ones on the app stores. Yet none of them looks good or offers any of the functionality I had on my Palm Treo battery management software. The App Store is a huge dumping ground of all sorts of crappy weekend projects, with a great professional app here and there, but buried among all the thrash. The rating doesn't help, because as soon as people start charging for an app, the bar is raised so much that the only thing commenters and raters do is bitch and complain. I have no idea how to fix this though.

Thanks, hadn't found this one, will try.

Perhaps some future "professional developers" will be encouraged to get into programming by experiencing a tool such as this early in life.

The video is perfect. I've said it before, and I'll say it again: aside from porn, pictures of cute animals are the best way to get people to use a new technology.

Scratch, HyperCard love child!

Meh. Wake me up when you can use the device itself to write software for the device. Until then, the barrier to entry is still too high.


"The Android Scripting Environment (ASE) brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device. These scripts have access to many of the APIs available to full-fledged Android application"

Not as simple as Inventor, but pretty powerful.

Think about people who don't have an Android phone and are deciding between that and the iPhone. If you are a casual tech person who keeps their machine in good shape, edits a bit of HTML/CSS from templates but hasn't taken the full leap into programming this could be the turning point.

Just like during elections the key isn't the hard core linux user or the unwashed masses who can't use their remote, it's the independents/people in the middle.

Purrr kitty apps. The new fart app?

There's a lot of "cool" happening here, but the alarm clock conversion feature didn't thrill me. It feels very "edge case" given the brilliance of some of the other ideas.

The thought that the bottom section of the phone can detach and flip around seems clunky to me. Like someday that piece might get loose and fidget a little, making my phone feel cheap and broken.

I think you are commenting on the wrong thread - probably because this and the other intended android concept thread are both at the top of the front page.

Trivial programming work is extremely cheap nowadays: it is done by hobbyists or students or it is usually outsourced to countries where unfortunately wages are very low. It think there is high supply of people with basic programming knowledge. Creating a system to help creating even very trivial software without programming knowlede is very hard, and I think there is very little economic demand for that. Also creating an application in one of these "software creator packages" can become quite complex. For me it is even harder to create something in them than using a traditional framework and programming environment.

One advantage of this above, say, outsourced work, is that it allows people who would never programme to programme. These people will then get a nice warm fuzzy feeling of acomplishment when they make a programme to fix their problem. I think spreading feelings of acomplishment is a good thing.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact