Best resources to learn Android Programming

 In CloudRail

According to IDC, the Android Market share is currently higher than iOS. This is one of the reasons that we at CloudRail realised our Android SDK before the iOS one.

Developing for Android can be a bit more complicated than iOS development. This is because of the variety of Android devices. With iOS, you only have to worry about a few OS versions and a few different screen sizes. You can also be pretty sure of the specs of the phones that are running your application. With Android, your app needs to be adaptable to screen sizes and specifications.

As an aside, this is why we developed the CloudRail Universal API SDK for Android before iOS. Programming for Android can be tough. We want to remove at least the worry of different APIs from this.

We’re aware that developers, or beginners, might wonder how to start coding for Android. So, here is a guide for the best resources online to get you started on your mobile app making journey. Make it your new years resolution to crack the Android Market.

Integrate APIs

Of course, the best tool to do this is with CloudRail, it is a universal API that allows you to include as many different APIs you want into your code with only one bit of code. All functions are shared between each interface. So, for example, upload() is working the same between Google Drive and OneDrive.

To get the CloudRail Library into your application, simply click here.


It is always recommended to learn programming or any other technical topic online. This is because the pace of things in the development world moves so fast that any book will be out of date. Online, you can view comments to find out any new developments.

But, sometimes, it is better to read a book and work through the exercises to learn programming. This allows you to have a single focus, without the distraction of many browser tabs. For those who do like book learning, the top books for learning Android development are:

Head First Series

www.safaribooksonlineThe Head First series is, for me personally, my favourite series of programming books. I would recommend them over all others. This is because of the way the books use memetic devices, images, and other tricks of memory research. You retain a lot more with these books than others.

If you already know a bit of Java, you can go straight into reading Head First Android Development. As this book does also presume that you have some knowledge in Java, if you are not already aware of how to program in this language, you will also want to start with Head First Java.

Learning Java by Building Android Games

517fTWFf6qL._SX258_BO1,204,203,200_If, on the other hand, you don’t know any Java, and want to learn it at the same time as Android development, then a great book to buy is Learning Java by Building Android Games.

This book isn’t just for those who want to learn Android Development. Instead, it takes you through the process that you will need to go through to be able to create any kind of Android App. It just uses game development as a demonstration of core Java and Android concepts.

This book is aimed at complete and utter beginners. It takes you by the hand through every single step, including setting up Android Development studio, presuming that you have no prior knowledge at all.

There is one problem with this book. It doesn’t explain everything you write. You can get started right away. But, when you get into building your own apps, you might find that the gaps in your knowledge. You will end up asking lots of questions on Android communities (of which we have also provided a list of the best ones below in this article).

Unity Android Game Development by Example

2014OT_covIf you know that your focus is going to be on creating games for Android, you can not go wrong with the Unity Android Game Development by Example Beginner’s Guide book.

Made for beginners, this book will take you through all the steps that are needed to create games for Android using the most popular engine, Unity.

Although this book is amazing at teaching complete beginners the in and outs of Unity, you have to be aware when you guy this that you are making a commitment to only make games for Android until you pick up another book or work through some other tutorials. This is because the book teaches you to code in C#. This is a completely different language to what Android Development Studio (and most Android applications) use.

Hello, Android

hello-android-bookThe Hello Android book is cited as one of the top books for learning Android. However, there is a caveat for this. Although it does attempt to take you through learning Java as well, it does presume that you do have some prior programming experience. Furthermore, it’s not great at explaining the quirks of Java compared to other languages.

But, yet, Hello, Android is unrivaled in how easily it describes Android concepts. Ed Burnette, the author, is amazing at explaining the unique quirks of items such as activities. He also installs great practices straight from the start in which areas of an Android application to put your code. Error handling is also taught perfectly.

Programming Android – O’Reilly

catWhile all the books above try to take a no-jargon based method into teaching android programming, even those that presume you know a little bit about programming, Programming Android is made for those who not just aren’t afraid with technical jargon, but are actually quite comfortable in it.

With the book’s attitude, you need experience of programming in Objective-C or Java. But if you are an accomplished programmer, there is no better way than this book to get an understanding of all of the technical parts of Android programming that you need to know.

Android 6 for Programmers

61Nj+hS7vFL._SX346_BO1,204,203,200_One of the few books that deals with Android 6.0, Android 6 for Programmers: An App-Driven Approach” is an up-to-date book, that is the best book for describing all the new features found in Android 6.0 Marshmallow.

Like the last two books, this one presumes that you already have development experience. However, it takes a unique approach to teaching Android. The book contains eight example programs, full of highly annotated code examples. This shows you Android Development through the way you will be coding.

Another great feature of this book is that it also shows you how to publish onto the Google Play store. As well as the different monetisation capabilities that you have. The advice on social media marketing and app store optimisation (ASO) is also indispensable.

Android User Interface Design

51x80xHbTYL._SX387_BO1,204,203,200_Learning how to programming isn’t the only step in creating great Android applications. Some developers, even accomplished ones, forget is the importance of creating great designs.

This is why the Android User Interface Design book is a important for any Android developer to have. This book presumes that you have no design experience. By the end, you will be making amazing Android experiences.

If you are dubious about investing time to learn design, think about this. A user will not see how great you are at coding when they first load up your application. And they will not see it when they are moving around it. Instead, the thing they will see is how you have chosen to display your application. When browsing new applications the first thing seen before installation is design. A good first impression is the difference between gaining a user (or a sale), and losing it.

Mastering Android Application Development

4221OSThis isn’t a beginner book, but once you have built one application, it is important to read about advanced practices to keep in mind. This way you will be able to know the best practices at the time you need them, even if you have to flip to Internet resources or back to Mastering Android Application Development

This book is for people that want to know how to build things that compete with other applications.

The best chapter of this book deals with obtaining analytics from your application. For example, you will be able to spot if one of the activity screens is too complex for most users.

Android Programming: Pushing the Limits

Android_Programming_Pushing_the_Limits_Erik_Hellman( book to read after you have mastered the basics of Android Development, Android Programming: Pushing the Limits is a book aimed at, in it’s own words, “people who can build a simple Android App in an hour.”

Even if you aren’t at that level, it’s important to know best practices when programming.

Another great thing about reading expert books after is that it allows you to see what it possible. Keep a notebook handy! You will have lots of ideas ready for your future projects.

How NOT to Write an App

Screen Shot 2016-01-07 at 13.29.17Humorous title aside, How NOT to Write an App is actually a great look into practices that you need to be aware of when making any Android application.

This book is aimed at all app developers. So even if you move to coding for another platform, it is still valuable.

The first apps you make are likely to just be for yourself. But, once you progress beyond this stage and start making apps for other people to use, you will want to have read this book. Just as the title says, you will know everything you shouldn’t do.





Xavier’s Robin Amazing Free PDF

Screen Shot 2016-01-05 at 17.28.10When you sort reddit/r/android by top posts of all time, the amazing Xavier Tobin Android Tutorial is the first post you will see, for a good reason.

Completely free, the 19 page PDF gives you everything you need to know to make your first Android App. From setting up to Android Studio to writing lines of Java. All core concepts, are explained in an easy going way.

Sure, the example app you make through this PDF might be not the most exciting. All it does is go through a list of famous quotations. But, most basic tutorials are exactly the same in having unexciting basic programs. But you’ll have the tools that you need to understand other example Android programs. And have enough knowledge to just start playing around with code yourself.

One advice for this guide (and in fact all others). When asked to copy and paste code, instead make the effort to type it. This gives you a feeling of the language and will also help you to take notice of every line of code while learning it.

Android Development for Beginners and Developing Android Apps

Screen Shot 2016-01-05 at 17.29.59Developed by the Android team themselves, these two courses are aimed at different levels.

If you have no programming experience in Java (or other object-oriented programming languages), you will want to start with the Android Development for Beginners Udacity course. There is a large button which says “Start Free Trial.” But, the course materials are actually completely free. You will want to scroll down to see this option. If you have a block of 14 days free though, it is possible to run through the whole course during the trial.

For those who do have object-oriented programming experience, there is instead the Developing Android Apps Udacity course. This is the one that presumes that you already have some knowledge of Java.

Google developed these courses. This means you can be sure of their quality. You also know that they are up-to-date with Google programming guidelines.

NewCircle Training Courses

Screen Shot 2016-01-05 at 17.30.56 1Although over a year old, the NewCircle Training Android Series is one of the best Android tutorials available on YouTube. This is another course that presumes that you have no prior knowledge off programming. The course goes into phone sensors as well. This shows you the beauty and power of programming for mobile. such as the location sensors on an Android device. You can find out how to use features of someone’s device early on.

After watching and following along with the course, you will also want to check out another NewCircle’s Android videos, “What I Wish I knew when I started” guide. This let’s you skip the pitfalls that first time Android developers have. And still learn the lessons normally gained from these mistakes.

Android Studio for Beginners

Screen Shot 2016-01-05 at 17.34.02Another great YouTube Studio, the Android Studio Tutorial for Beginners is a bit of a misnomer, as it actually takes you all through every single step of programming. This has very much been made for beginners, but it moves along at a fast pace. Although it doesn’t go into quite as much detail as the NewCircle Training Courses, it is more recent.

This means, if you follow only one YouTube series, you have to make a decision. Do you want to follow along with an old video series, and maybe have to Google certain elements. yet also gain a clear foundation in programming that will last you forever. Or do you want to follow this particular series and code for Android straight away. Yet maybe struggle with some of the heavy duty programming you might encounter.

Lynda Android Courses

lynda_comIf you don’t mind paying for your Android learning (and with the money you can make on the app store, you are likely to make it all back anyway), then there is no better option for paid video tutorials than the Linda courses.

For complete beginners, there is both “Developing Android Apps Essential Training” and “Up and Running with Java Applications”.

One advantage of using Lynda over other video tutorials is the fact that it is paid. Lynda have the budget to make sure that their videos are clear and knowledgeable. In fact, if it wasn’t paid, Linda would be recommended over all other videos.

Ray Wenderlich – Android Development

Screen Shot 2016-01-05 at 17.37.06If you already know your way around a coding environment, just needing a quick overview of what is different in Android, then you will want to take a look at the Ray Wenderlich Getting Started with Android Development guide.

The overview gets you up and running with the Android Development Studio straight away. You may have to do some Google searches or check out the comments. This is because Android Studio does often receive updates.

Wenderlich also goes into clear details on where exactly to put each line of code. This is important as Android coding can be strict on the process at which code is attached to.

Unity Courses

unity-logoIf your focus is to develop games, or VR apps, then you will probably be working with Unity. Unity is a game engine that includes an easy way to export files to mobile phone formats. Including Android.

One thing to be aware of with Unity is that the languages it uses will not translate to other environments. Instead of Java, in Unity you can either code in C# or a custom coding language for Unity called UnityScript (which is kind-of based on Javascript).

If you’re sure that your focus is going to be just on making games, then you can not go wrong with following the official Unity courses. All of them will take you through the concepts of programming though example games.

Of particular note is the virtual reality section. Unity has become the go-to for creating VR apps, for a good reason. The Cardboard and Oculus SDKs (think of SDKs as like plugins for now) are quick and easy to install in Unity.

Learn Java Online

Screen Shot 2016-01-05 at 17.38.56If you are focused on application development, not just mobile, your priority is learning Java.

One of the best websites to learn Java on is Learn Java Online. When learning programming, you need to work with code examples as soon as possible. This reinforces the concepts you learn. The Learn Java Website has a code editor on every page. This allows you to try out the sample code you are given, as well as work on the exercises that the website gives.

University of Helsinki’s Object Oriented Course

Screen Shot 2016-01-05 at 17.39.21If you come from a non-object oriented background, then finding a great resource to get used to the complexities of object-orientated programming is a god-send. The University of Helsinki have an Excellent Object-Oriented Online Course that is easy to follow along to.

Learning how to program for career opportunities? The course also focuses on how to operate in an industry like environment. It uses Java in the same context and in the same environments as you would do if you were within a firm programming.

Using the University of Helsinki will give you a strong foundation in Java. This will help you when doing any kind of Java development.

Vogell/a Android Tutorial

Screen Shot 2016-01-07 at 15.14.13Based on Android version 5.0, this amazing tutorial kick starts your android development. It also highlights an important task, that of speed optimisations for the Android Emulator. When you are starting off, you will be running your apps many times to debug any new code that you have written.

Additionally, it also takes you through the process of creating widgets and live wallpapers. Many other tutorials gloss over this.




Android Communities to Get Additional Help In

No matter what course you use, or what resources you use, you will have questions throughout your Android career. Here are the best communities to go to to ask your programming and development questions.

The Android Developers Subreddit –

Screen Shot 2016-01-07 at 13.31.09No resource of communities is complete without including Reddit. The Android Development Subreddit is located at, and is an amazing resource to get you on your way (as long as you can avoid switching over to /r/pics or /r/funny).

With, at the time of writing, 45,000 users, any questions you submit will be answered. In fact, if you search, chances are you will find that someone has already asked your question.

Users of all levels post on here, from complete beginners to advanced developers.

It is also a great place to subscribe to for any breaking Android Development news. The only way to get any news faster is to be refreshing the official channels. The moment something is announced, you can be sure that someone has already posted it here.

Stack Overflow – Android Section

pszAeGhWhereas the Android Subreddit is the place to get feed back on all elements of your Android Learning Career, Stack Overflow is the place to go when you have something nitty gritty to solve in your code.

In the Stack Overflow community, users gain points for answering questions. They will gladly look over your code for you and help you as long as you follow a few guidelines.

First of all, you do need to include a code sample of what you are working on. No general questions are allowed. You have to show that you have been trying to solve the problem yourself.

Secondly, you will need to check that someone else hasn’t already asked (and had their similar) question answered. Stack Overflow hates duplicate posts in their community.

However, once you have followed all of these rules, you will find an invaluable resource. Stack Overflow doesn’t just fix the bugs in your code. The users there make real efforts to educate users in why something works, or in why code doesn’t work. It’s just like having a thousand tutors mark your home work with detailed notes on what’s wrong.

Android Community – Google +

photoAlthough Google+ might be dead as a social network in terms of Facebook like scale, communities are bursting with activity on it. Although there are many Google+ groups for Android Developers, one of the best one is the official Android Developers Google+ Community.Once you have developed your first application, this is an amazing place to get some feedback on what you have done. Additionally, just like the Reddit Android Development Community, users of all levels, from complete beginners to professional app developers.

It is also a great community to join and flick through when you are looking for inspiration for an Android project. Many of the items posted on it are quick prototypes, or a quick look into recently developed apps.

XDA Developer Forums – For Comfortable Programmers

Screen Shot 2016-01-07 at 13.39.47For Android developers that have become confident in their coding, there is the XDA developer forums. This is one of the most active communities in Android. If a phone can be rooted, the method of how was probably developed by a member here first.

Because of this, the XDA developer forum is somewhere to go once you have your first two or so apps created. It is the best place to go once you have outgrown beginner resources.

The XDA developer forums isn’t just useful for Android programming. Practically every single Android device has a sub-forum there. All topics relating to Android (and in fact, other phones, but usually as compassions to Android) can be discussed.

The location for developers is the App Development Forums. You won’t just find information on how to program your app. The section also offers an active community talking about testing, design, and marketing.

Android Central – Smaller, Homely

Screen Shot 2016-01-07 at 13.42.27The Germans have an untranslatable word, “gemütlichkeit”, which invokes images of hanging around a camp fire with good friends, glühwein, chatting and laughing. That is one of the best ways to describe the Android Central Forums

Just like XDA developers, it is not just focused on Android Programming. There are loads of sub forums about all aspects of Android. It is much smaller than XDA, which can actually be a good thing. XDA can sometimes feel like a community full of faceless people. On Android Central you start learning personalities of people.

Two great areas of the Android Development section are Developer Spotlight and Developer Beta Testing. These are the best places to go to get some instant feedback on your applications.

Für echter Deutscher – Android

styleLogo-2f885311b0357f085e6fbd90a775e4da967c2f45My German is not amazing, but hopefully the title is grammatically correct!

The is the biggest German speaking developer forum. One of the best areas of this is the “Konzeptentwicklung/Concept Development” areas, which isn’t found in any of the communities above. In this area, you can simply talk about the logic steps of your application. This allows you to get feedback on if you have the right way of doing something before you start writing any code.

There is also a great “anfängerfragen / Beginner Questions” area. This is one of the friendliest places to go for true beginners at Android Development.

As with other development forums, there are also sections for other areas of Android. This makes it a great place for Germans to go who would like to speak about Android topics in general.

Unity Android Development Forums

unity-logoIf you have decided that your main goal is to program Android games, then you will want to join a Unity forum. There is no better place to get help for this kind of Android Development than the official Unity forums.

Everyone on the forum is focused on Unity development. You are much more likely to get the kind of answers that you are looking for on Unity than if you were to ask on a general Android forum.

Furthermore, sometimes the Unity SDK can be a little temperamental. For this reason, these forums are also an invaluable resource to search for, even if you don’t join the community, for any error messages or problems that you may have in building a Unity powered Android application.

Dream in Code – Not just Android Development

logo_2012There are many different skills that you need to learn during the Android development process, not JUST Android programming. For example, you are likely going to have to learn the best way to create user interfaces. Or create the best algorithms to use for sorting through various data structures.

Although the Dream in Code Android Section is incredibly useful for all topics of Android Sections, if you decide to enter the community, you shouldn’t just hang out in this area. You can find help to programming problems; Game Theory, autocomplete search, and much more.

So, if you want a place where you can grow programming skills, not just Android, Dream in Code is perfect.

Making Money with Android – What it says on the tin

Screen Shot 2016-01-07 at 13.46.47Once you have mastered the art of creating apps, then the next step is making money. Although many of the communities listed above do have a section on how to market and monetise your application, the Making Money with Android forums is the best way to get feed back on all aspects of earning money.

It is also a great inspirational source. One sections is the “Income Reports” area, in which the users will post how much they’ve earned, and how.

Not only that, you can also get instant feedback on how the forum perceive the marketing and earning potential of any new app ideas that you generate.

Code Ranch Android Development – Great for complete beginners

Screen Shot 2016-01-07 at 15.26.42The Code Ranch Android Forums are provided by the authors of Head First Android Development. As most of the users have discovered it from reading the introductory books, you know that users on it understand what it is like to be a beginner. For this reason, it is a great and friendly place to go to at the start.

Furthermore, CodeRanch also has areas for other programming tasks. Such as general Java help, or ways to work with databases. This makes it another great resource to stretch out your programming skills further




Other Resources and Tools


cloudrail_logo_mheaderA (small) bit of self-promotion is never bad!

Our tool, the CloudRail Universal API, allows you to add many different online services to your Android applications.

When you add a service, such as Dropbox or Facebook, typically you need to look through the service provider’s website, read through reams of documentation, and struggle to work out how exactly to add this particular service. This might be manageable if you are adding only one service to your application. But, when you move onto adding many more, then you have a massive time sink. More APIs means more documentations. More time debugging. More time coding boring things.

With CloudRail, you can simply select every API you want to add in an online interface, and add a small file into the Android Development Studio. From there, you can then add the features of these services into your application easily.

You can either explore the rest of the CloudRail site to learn more, or sign up here for free and get started straight away.

Tasker and Tasker App Factory – Quick Prototyping

unnamedSometimes, when you have a program you want to develop, you want to get a quick prototype into your hands straight away without having to fire up the Android Development Environment. For this, you can use the paid app Tasker and it’s associated (free) program Tasker App Factory

Tasker allows you to set up actions and responses to almost everything that an Android phone can do. In fact, for some Android users, it is their first taste of programming. Using Tasker, you can also create screens, which is the equivalent of designing an interface for your application.

This means that you can make some basic applications straight on your mobile phone. This will allow you to gain an appreciation of how your application could work before you load the Android IDE.

Android Vocabulary Glossary

Screen Shot 2016-01-07 at 13.48.13Provided by Google for the Udacity course above, the Android Vocabulary Glossary helps to take all the work of remembering what might be to some people complex words and terminology.

Of course, the website is completely mobile optimised. You can always load it up on a phone or tablet and keep it handy while reading android guides. This will become invaluable in decoding the meaning of particularly paragraphs throughout your learning

FluidUI – For Quick Android Design

Screen Shot 2016-01-07 at 13.48.45The website FluidUI allows you to quickly build the UI of an Android app. As talked about above, the UI is actually one of the most important thing in an Android app. It will be the first thing the user will see.

Using Fluid UI, you can get an easy to use, graphical way to design your Android app. You can get the first part right before starting to write the layout of your application in the Android IDE.

Although there are paid plans with Fluid, you are able to design ten pages for free. This should be more than enough for most beginner applications.

GitHub – for managing your code

github-collab-retina-previewWherever you are coding alone, or as part of a team, GitHub is one of the best ways to manage your project.

Before the days of GitHub, developers would often have many folders on their computers to keep each major and minor change in . With GitHub, you don’t have to worry about keeping many files on your computer for each different version. This makes it easy to roll back to an earlier version of your application if something goes drastically wrong. And if you haven’t programmed before. It will.

Amazon Testing Service – For Debugging

Screen Shot 2016-01-07 at 13.49.21Once you have something that seems to be complete, you still have to work through the problems of debugging and testing the application to make sure that everything is working as it should.

Amazon offer an amazing, online service that allows you to upload your APK. They will then go ahead and attempt to test everything in the application for you. The Amazon App Testing Service does this by trying to navigate all screens, pressing all buttons, trying out different combinations of check boxes, etc.

It’s not a replacement for getting many different users to try out your application. But, the Amazon app testing service is a great way to get glaring bugs and massive problems out of the way. Before showing your work to even a single user.

Infinum – List of great libraries

Screen Shot 2016-01-07 at 13.49.52Once you get far enough into Android Development, you will want to make use of an array of different custom libraries. This will help you simplify your Android Coding and development time.

There has been a great list of libraries published by Infinum which will allow you to add a lot of features to your applications without having to code them all from scratch.

For example, using some of the libraries in this great curated list, you can make it easy to retrieve data from a database and load images from online sources.

appScreenShotMaker – For Presenting Your Application

logoOnce you have built your application, the next step is to make sure that it is looking it’s best within the app store. It’s not just enough to provide screenshots. You need typographically pleasing text, great backgrounds, and a phone frame.

This is where appScreenshotMaker comes in. Using this online application, you can frame your application in the best possible light to all users.

Although playing around with the tool is completely free, there is a one off charge of $3 USD to be able to remove the website’s watermark from your images, but this is a one time free that will give you unlimited access. With the help that it will provide you to fully market your application, the small charge will more than make up for it in terms of time saved and money earned.

Android Niceties – For Design Inspiration

Screen Shot 2016-01-07 at 13.50.41A collection of the nicest designed Android Apps, Android Niceties showcases all of the best looking Android applications. This means that if you are getting stuck for the way to lay out the menus and interface of your application, this should be one of the first places that you turn to for getting some design ideas.

Only the best applications are submitted to this blog, meaning that you will be able to learn from the masters of Android user interface developers.

Furthermore, looking through the comments of each post will help you understand what exactly makes each design great, wherever it’d be the choice of fonts, the colour scheme used, or the particular graphics. Additionally, many times, the comments also help to illuminate the way to perform the great designs within the Android IDE.

F-Droid – Open Source Android Applications

cropped-header_resp1Another great way to understand how to build Android Applications is to examine those that have already been built. F-Droid isn’t your every day alternative app store. It is a listing of open source android apps, meaning that developers have chosen to make all of their code public.

When you view an app on the F-Droid website, you also get a link to the Applications source code, as well as options to be able to track any issues you might find with your applications.

In fact, a great way to get feedback on your Android applications may be to also make your code open source and to submit it to this website. Then, if enough users do take the time to have a look at it, you could get some great feedback from other Android developers.

Iconion – Create great looking icons

Screen Shot 2016-01-07 at 13.53.33Completely free to use, if you aren’t so great at using graphic programs, Iconion is a downloadable app that quickly generates great icon sets for you. Even if you are amazing at using these tools, one advantage of using Iconion is that the icons created in it look good at any size, meaning that you don’t have to spend ages editing sets in graphic programs to get the best quality possible while also having a small file size.

The main way that it allows you to create icons is by using information based on fonts. So for example, you can use the symbols found in Wingdings to quickly generate a great set to use within your applications. As well as this, there are also a range of free to use clipart and other icons included within Iconion.

Your Android Journey Begins

With all of these resources at your disposal, you should be able to get a great start into building and creating your own Android Applications.

At CloudRail, we are a big fan of the power in communities, both for getting feedback and for being a place where everyone can contribute what knowledge that they have. So we do heavily recommend joining on e of the communities that we have listed above as early into your Android journey as possible.

We also like to think that this resource list is as comprehensive as possible. Have we missed anything? Do you know of anything else that would interest new Android developers? If so, please send me an email at and we will include it in this guide!

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Recent Posts