Mobile Application Development

Best Practices For Creating Mobile Applications

Mobile applications are already considered a big part of our lives nowadays. For every activity we do on a daily basis, there is already an application that can assist us and can make our lives easier.

But are you wondering what it takes for a developer to create and provide us our daily applications fix? Below, we’ll discuss the different practices in order to have a successful application.

Research

Before diving straight into development, the team including the designers, developers and all the people involved in the application should first conduct research. Research what kind of app you want to create.

By conducting research, you will have an idea of what would be the primary function of your application. Can this app solve any problem we encounter every day? Who would be your target users for this application? Is there a similar application available and what would make the users choose your application over the existing ones in the market?

Decide which platform you’ll be developing for first.

This decision will also become easy based on the research you’ve already done for the application. Based on the target users, you will know which platform those users commonly use.

Another factor is which platform the application would be easy to develop on. The goal of every new application is to release it to some users, if not to the general public, as soon as possible. The reason for this is that you will never make your application perfect, but you can continuously improve it by getting continuous feedback from initial users.

Keep it simple at first.

Usually, successful applications are apps that offer a single functionality. Applications with lots of mini-applications inside may confuse the users that will make them not use the app anymore. As mentioned before, you can still add more functions based on the demand of the users.

Get the opinion of the users.

Users will drive the direction of your app. Users are mainly the customers of the application. As a developer, a certain feature that you think is a great idea may not be that great to a large number of users. This will also guide the developers to plan for future releases.

By following these guidelines, you are already on a good start when you develop your new application. Good luck!

Contributor:
Roselle Elefante
Android Developer


Read Next: 5 Tips for Better Coordination with Your Outsourced Tech Partner


Here at Monstar Lab Philippines, we encourage our engineers, developers, and practically every team member to share technicals skills, hacks, and knowledge to the entire family. We conduct regular Tech Talk Tuesdays (or Thursdays) more popularly known as T3 Sessions. This helps us keep our minds sharp and always up to date with the latest in software development, mobile development and emerging technology.

Monstar Lab Philippines can also help you develop your own mobile application or whatever digital solution your business needs. Feel free to send us a message anytime and we’ll help you out.

Game Jam Skills

Test Your Skills in Game Jams

One of the best ways to test your creativity and programming skills is to join a game jam. A game jam is a hackathon for video games.

Ludum Dare is the longest running and largest online game jam in the world. It is held on a weekend three times a year (April, August, December). Participants make a game that is based around a certain theme. There are two versions of competitions you can choose to join.

The first is called “Jam”. In Jam, participants must finish their game within 72 hours of development time. They can do it solo or they can be in teams. Resources from the Internet, such as art and sound, can be used as long as they have the rights to use it.

The other is called “Compo”. This one is harder because you only have 48 hours to finish your game and you must do it solo. In addition to that, you cannot use resources from the Internet. That is, you must do everything from scratch. After the competition, participants play and rate other people’s games to later determine the winner.

There are no prizes for the winners, only bragging rights. Some games are so good that it reached the Steam platform when the creators continued the development after the event.

I participated in Jams four times but only two of them made it to submission. If you are planning to join one, here are some tips to be able to finish.

Plan your game.

When the theme is announced, you should list down your ideas. Think about what could be the core gameplay on those ideas and choose which one best suits your skill level. Don’t choose the one that’s very far from your skill level as you’ll likely not finish on time. Scoping your game is a must especially for game jams. Scoping is limiting the features your game will have. It’s easier to complete and polish a game with smaller scope. It also helps to draw the flow of your game including the screens from start to end.

Prototype your game.

Start on prototyping your game. Code the game without the art; just use simple shapes as placeholders for art. Try to play it multiple times to see if it’s fun. If you think it’s not fun then you can tinker with your original game idea. Prototyping helps to see early on if a game mechanic works or not or if it’s fun or not.

Have time to sleep.

You only have 2-3 days to finish your game but it is also important to have some sleep. You don’t really need to get 8 hours of sleep, a few hours of sleep just to recharge yourself will do. Having no sleep obviously hinders your productivity. I’m impressed with participants of Compo who only have less than 48 hours (since they also need to sleep) and still manage to finish everything. Really shows that they know their craft.

Eat.

Have proper meals. Have some snacks beside you. You don’t wanna deprive yourself of food during the jam. Drink some caffeinated beverages if you want as you’ll be staying longer than usual.

Lastly, have fun!

Have fun making your game while knowing at the end that you’ll have finished something to show to other people. If you don’t finish by the deadline, that’s okay! At least you have done something and you definitely have learned some things throughout the jam. You can try again on the next Ludum Dare and apply the things you have learned. Don’t worry about not finishing because you’re not alone.

Here is my entry for Ludum Dare 38 which was held on April 2017:
https://ldjam.com/events/ludum-dare/38/strategic-survival

The next jam, Ludum Dare 44, will be on April 27-30, 2019. I might participate in this one. Come and join me!

Contributor:
Marvin Bables
Java Developer 1

On A Side Note:

Monstar Lab Philippines recently sponsored CIIT College of Arts and Technology as they joined Global Game Jam 2019 this past January 25-27, 2019. This event saw the participation of thousands of developers, students and even professionals from around the world to deliver the next big game within 48 Hours. Read about it here.


Read Next: Monstar Lab PH Joins Japan’s SODEC Expo


Here at Monstar Lab Philippines, we encourage our engineers, developers, and practically every team member to share technicals skills, hacks, and knowledge to the entire family. We conduct regular Tech Talk Tuesdays (or Thursdays) more popularly known as T3 Sessions. This helps us keep our minds sharp and always up to date with the latest in software development, mobile development and emerging technology.

Monstar Lab Philippines can help you develop your own game or whatever digital solution your business needs. Feel free to send us a message anytime and we’ll help you out.

Software Testing Basics

Going Back to Basics: Software Testing

Software testing is really both a science and an art. For a better understanding and appreciation of its duality, let’s look into basics!

What is software testing?

It is an activity that checks if software systems work as expected based on requirements. It can sound so simple and easy to do, but believe me, it’s not. Here’s why:

The role of software testing:

Software testing is a vast field. It can range from simply comparing the alignment of web fields to checking how secure an app is. The role of software testing varies depending on what type of quality you are looking for.

  • Do you want just want to test if the functionality of your app’s registration form works based on your functional requirements? Testers can do that for you using functional testing.
  • Do you want to check if your app is easy to use by your target market users? Testers can get it done too through UX testing.
  • Do you want to check if your app processes user request quickly? Performance testing can be executed by the testers.

These are just some of the roles of testing, there are still lots of it out there. Depending on your quality needs, the role of testing adjusts.

Why do we do software testing?

With these testing activities, one can ask, what do we get from it? Is it worth the investment? The answer is yes. Many organizations have tried to cut costs on software testing during the early phase of software development. But sooner or later, repercussions caught them unguarded during the production phase.

One of the typical stories we get from the software development industry is this:

“Stakeholders decided to remove the tester from the development team to “save costs”. They immediately achieved it – no tester, lesser cost. 3 months later during the early stages of the production phase of their product, the app gets buggy.

Customers can’t properly use the app and aren’t happy. Clicks don’t convert to sales, business reputation gets damaged and that’s just the tip of the iceberg. The stakeholders start to feel the sting of these bugs. They finally onboard a tester to the team and issues from prod server were discovered one by one.”

The problem with this is that bugs found in the production phase are costly!

It’s beyond the “savings” they got from cutting the tester earlier on. Not even close. Bugs need to be discovered, investigated, fixed then re-tested immediately. That process involves the entire dev team which entails a higher cost.

Software testing is one of the crucial parts of software development. Neglect quality now, and it’ll bite you fast and hard later on. Quality is simply non-negotiable.

Contributor:
Kevin Badilla
Software Quality Assurance Manager


Read Next: US Digital Agency Fuzz Joins Monstar Lab Group, Strengthening Global Presence


Here at Monstar Lab Philippines, we encourage our engineers, developers, and practically all team members to share technicals skills, development hacks, and industry knowledge to the entire family.

We conduct regular Tech Talk Tuesdays (or Thursdays) more popularly known as T3 Sessions.

This helps us keep our minds sharp and always up to date with the latest in software development, mobile development, and emerging technology. You can definitely count on the expertise of our team to design and deliver top-notch enterprise software solutions. Feel free to send us a message anytime and we’ll help you out.

URL Shortening

How You Can Do URL Shortening

URL’s or ‘Uniform Resource Locator’ is an integral part of our day-to-day life on the internet. They are the mechanisms in which we jump from one page to the other as we search with Google or follow up on an interesting post on Facebook. As the internet increased in popularity and people started to create their own content, the previous practice of hand-crafting links became obsolete. Now, content management systems generate the links via an internal logic that creates enormous links like this, https://www.facebook.com/builtable/?__tn__=kC-R0.g&eid=ARBPC_wY3Mw7S52Bu09GfhTXAZRams5iYYQVw1cWaIAo.

And thus the art of URL shortening was born.

What is URL Shortening?

URL Shortening is, in essence, creating a short link that redirects to its longer counterpart. There are many ways to achieve. However, the most common approach is to generate unique keys to each URL you want to shorten, and then pair that will a root URL or domain. An example would be

https://my.domain.com/1bNsLrK

Additionally, any modern URL shortening service is expected to not only store millions of qualified links. It should also find and serve those links in seconds.

The Art of Short Links

Following the algorithm presented above, the first order of business is generating a unique key for every link that’s submitted for shortening. If you are using a relational database, the natural candidate for this is the primary key of the table that you are using to store the original links.

Using the primary key also solves the issue of speed talked about earlier. Using it ensures that the record can be retrieved in the quickest possible manner.

As convenient as using the primary key is, it also has its own limitations (security issues aside). Imagine recording your trillionth link. Here is what it would look like…

https://my.domain.com/1234567890

And while this link is short enough (kinda), it also highlights the fact that as your database grows, the links it generates is going to get longer over time.

A popular though an imperfect solution is to “compact” the primary key. This can be done by converting it to a higher base or radix. For example, let’s convert our previous primary key in the decimal system (base 10) to the higher hexadecimal system (base 16)

1234567890 => 499602d2

If you do a count its 10 vs. 8 characters, that’s a 20% savings on the length of the text. Using a higher radix/base system should provide a larger benefit.

With this foundational knowledge, you can now go ahead and create your own link shortening service. There are other topics we can discuss to enhance the service such as creating your own base system for better security, but it’s best that we leave it to another article.

Contributor:
Irving George Menil
Senior Developer

Original Content:
Nathaniel Martinez
Java Developer 2


Read Next: Make Your Persistence-Layer Production-Ready with Liquibase


Here at Monstar Lab Philippines, we encourage our engineers, developers, and practically all team members to share technicals skills, development hacks, and industry knowledge to the entire family.

We conduct regular Tech Talk Tuesdays (or Thursdays) more popularly known as T3 Sessions. This helps us keep our minds sharp and always up to date with the latest in software development, mobile development, and emerging technology. You can count on the expertise of our team to design and deliver top-notch enterprise software solutions. Feel free to send us a message anytime and we’ll help you out.

Game Development

The Truth About Game Development

There’s much that society needs to learn about the truth of game development. That said, we’re dropping in with some hard but valuable facts!

Game development is hard!

As a programmer that develops mostly web applications for a living, I find developing games much difficult, but it’s the kind of hardship that I enjoy. From the mathematics on how a projectile should move, to the character aesthetic choices, to the intricate level designs, and to the subtle game design that players won’t notice but adds to the overall enjoyment. These parts of game development challenge my logical and artistic skills that I can’t find anywhere else on the software development spectrum.

But recently, I’ve learned one of the more important things in game development, and that is knowing the constraints of our project. For us, it’s the small team with little experience on it, and the budget that only covers the basic necessities (time, code repository and learning materials).

In order to facilitate these constraints, we’ve decided to build a game within the scope of our skills, and the use of free tools to create the game assets.

The first thing is the scope.

It’s easy to get lost with all the excitement when throwing ideas around, especially on our first game. Features that aren’t necessary to the core gameplay should be dropped and build something from what we know and have instead. If a core feature is a bit complicated for us, we break it down to its basic form. Keeping things small and simple makes developing a game easier and faster. The goal for our first game is to create something playable.

The second are the tools we are using.

Open-source softwares are great, and most of them are free. They’re great alternatives to proprietary software if you don’t have the budget for it. The availability of free open-source software for different kinds of applications covers the necessary processes of game development. We use Libgdx as our framework, GIMP for graphics, LMMS for sound and music production, Openshot for video editing and if we start with 3D graphics there’s Blender. These top-notch tools are enough for us to develop a complete game.

These are the challenges we’ve encountered since we started our game development group and we’ll be expecting more along the way.

Try one of the games we have developed (courtesy of our very own Marvin Bables). It’s simple but is a lot of fun. Check it out! Download the game. (currently for android devices only, sorry iOS guys!)

Article Contributor(s):
Leand Ching
Java Developer 2

Mobile Game:
Marvin Bables
Java Developer 1


Read Next: Test Your Skills In Game Jams


Here at Monstar Lab Philippines, we encourage our engineers, developers, and practically every team member to share technicals skills, hacks, and knowledge to the entire family. We conduct regular Tech Talk Tuesdays (or Thursdays) more popularly known as T3 Sessions.

This helps us keep our minds sharp and always up to date with the latest in software development, mobile development and emerging technology.

Monstar Lab Philippines can help you develop your own game or whatever digital solution your business needs. Feel free to send us a message anytime and we’ll help you out.

Monstar Lab PH

Monstar Lab PH: 2018 in Perspective

A lot of things happen in a span of one year. New friends were made and new memories were created. We braved through trying times, counted on each other, and came out stronger than ever as one solid team. Due to this, Monstar Lab Philippines continues to grow as one big family.

As 2018 draws to a close and a new year dawns upon us, let us take a listen to some of the people behind the scenes but definitely contribute to the progress and success of Monstar Lab Philippines.

Nickname: Leand
Designation: Java Developer 2
Years with MLPH: 2 Years

What is your fondest memory with MLPH this 2018?

Working on a project with our Japanese team and developing a game on the Game Jam conducted by the Game Development Special Interest Group (SIG). I also had fun memories from company activities such as Band Night and Halloween Decoration.

What would you consider your biggest achievement that you are most proud of this 2018 in MLPH?

My T3 presentation of Neural Network. I had fun studying and enjoyed developing a machine learning application but most importantly, I shared what I learned to my fellow employees. It also gave me insights on how to communicate and present properly.

What are you most thankful for this 2018?

The experience I had working with other people and the wisdom I learned from them.

What are you looking forward to this 2019?

I’m mostly looking forward to and excited about the activities that we will do in the Game Development SIG*. There are also the opportunities to learn new technologies from upcoming projects.


Nickname: Maki
Designation: Project Manager
Years with MLPH: 1 Year and 9 Months

What is your fondest memory with MLPH this 2018?

Travelling across the Philippines to train end users of the Department of Agrarian Reform. Tiring yet satisfying.

What would you consider your biggest achievement that you are most proud of this 2018 in MLPH?

The release of RAX Suite this 2018. RAX Monitor has been deployed at the IQVIA McKinley Office and the RAX Studio free version has been released publicly.

What are you most thankful for this 2018?

Monstar Lab Japan’s support on providing potential clients.

What are you looking forward to this 2019?

Seeing how RAX’s features would grow and how the product could help Filipinos. More exciting projects for 2019!


Nickname: Chris
Designation: Senior UX/UI Designer
Years with MLPH: 1 year and 6 months

What is your fondest memory with MLPH this 2018?

I think having new employees on board this year is something that I really like because I get to know and guide them. I would add to this are the company activities (eg: halloween party) and Friday game nights.

What would you consider your biggest achievement that you are most proud of this 2018 in MLPH?

Two of my biggest achievements this year are the Suntory app, and the marketing of RAX. First is the delivery of Suntory project, which I was able to managed well with the team and the client was happy with our output. Second would be the marketing of RAX product, wherein I created the marketing plan and strategy along with the collaterals needed to kickoff the product.

What are you most thankful for this 2018?

I am thankful this year because even if I am with the company for 6yrs already, I am still learning new things not just in design but in other fields which I am able to explore my other talents.

What are you looking forward to this 2019?

To meet other designers from global offices to learn from them (their design process and standards), and to attend a design-related international seminar.


Nickname: Charm
Designation: HR and Admin Associate
Years with MLPH: 5 months

What is your fondest memory with MLPH this 2018?

I have a number of good memories here in ML. The one that I appreciate most was the November Activity which was the Halloween Contest. The Support Team really made an effort with all the costumes and props. Everyone was really in character! We really had a great teamwork, and with that we won the 1st prize.

What would you consider your biggest achievement that you are most proud of this 2018 in MLPH?

Being a part of the ML Support Team is my biggest achievement so far, I never had an experience working in HR Department before and I’m happy that my co employees appreciate my work. Every time I accomplished and resolved issues makes me feel that I am achieving HR goal, to meet employees’ satisfaction.

What are you most thankful for this 2018?

First, I’m thankful for ML management because they gave me a chance to prove that I can contribute to the organization. I’m also thankful because I gain new friends in ML. and of course I’m thankful for the benefits the company is providing. It means a lot to me.

What are you looking forward to this 2019?

I’m looking forward to continued learning. In 5 months, I feel like I have grown and learned a lot with HR Department, but there’s so much I still want to learn and experience. Maybe this 2019, it’s time for me to more independent in all aspect and to jump off to my comfort zone.


Nickname: Mita
Designation: Java Developer
Years with MLPH: 1 month +

What is your fondest memory with MLPH this 2018?

I haven’t been here long, so the fondest memory I have is when we completed all our tickets before the project demo of our 4th sprint and our client was so pleased of our progress that he paid immediately the next day.

What would you consider your biggest achievement that you are most proud of this 2018 in MLPH?

So far, being able to finish all of my tickets in the 4th sprint.

What are you most thankful for this 2018?

First of all I’m very thankful I got accepted as a java trainee here in MLPH. I was able to meet such friendly and awesome people here. I’m also thankful I had the opportunity to be assigned on a new project “Artemis” because I got to learn and use new technologies. I’m so thankful for my teammates, and everyone who has helped me during my stay.

What are you looking forward to this 2019?

I’m looking forward to the official start of the java training program. Working in my current project is great and I have learned a lot, but there are tasks that I’m still limited to. Going through the training would certainly enable me to contribute more to future projects. I’m also looking forward to more fun activities here in MLPH such as the game nights on Fridays and be more acquainted with everyone.

Contributor:
Gabriel Valmonte
Marketing Manager


Read Next: Monstar Lab to Enter Middle Eastern Market with New Office in Dubai


Be part of our growing family of technology enthusiasts and creators of Monstar Lab Philippines. Enjoy a dynamic, fast-paced and highly engaging work environment. Learn more about us here.

Outsourced Tech Partner

3 Outsourced Tech Partner Must-Haves

Nowadays, it’s not uncommon to look for support especially when it comes to tech development overseas. Potential outsourced tech partners are gaining more and more attention. Here’s a snapshot of how most enterprise managers source for their much needed software development partner. Open google, key-in “top software development companies” (or something like that), then click on search. The ever reliable search engine churns out a list (including actual lists), of top tech companies. This will serve as the initial pool of candidates as you pore over their credentials, websites and reviews.

A few good ones stand out among the rest and you make your final list of candidates to reach out to. Great! But wait a minute, before you lock in that final list or partner, stop and think if you have really considered every component?

Because sometimes with everything that we try to look at, we can miss out on the simplest yet important considerations for getting the outsourced partner perfect for our needs. We have just 3 simple things you can look as part of your criteria for choosing the best tech partner.

Accessibility

Since you are looking for tech partners outside of your immediate location, (or country perhaps), it is critical that we look at accessibility. It can be a combination of various aspects but the one thing we would want to focus on here is the time difference. The amount of time between you and your tech partner can define how you do your coordination, tech execution, and reaction to changes or issues.

If you have too large of a time gap, periodic coordination can become tedious to one or both parties. It will either be too early or too late in the day which can hamper productivity and even the quality of the meetings.

When it comes to execution and reaction time to address issues, a wide time difference can be very detrimental. You wouldn’t want to wake up in the morning to major issues, report it your tech partner only to be reviewed and resolved very late in the day (if at all). It can be difficult to communicate critical issues that need to be address immediately.

It may be wise to consider choosing a tech development partner who is within a maximum of 5 hour time difference from you. This is an ideal gap to work in and allows for flexible coordination opportunities and response time to issues.

Communication

Good and clear communication is key to any engagement or undertaking. But when it comes to technology project outsourcing, its importance cannot be stressed enough. You have to make sure that communication lines are crystal clear and that every aspect of the project is well documented.

It will also be beneficial if you find a partner that speaks the same language you are comfortable using, such as English for most people. If you can’t establish a connection due to language barriers, the success of the entire project hangs in the balance.

Capability

Competence and capacity to deliver is of course a MAJOR consideration. We often find ourselves asking “Do they have the resources? What about their track record in terms of projects completed? Or can they be trusted in the first place?

Your offshore partner has to exhibit credibility which may come in the form of several indicators such as years in operation, being part of a regional or global network, impressive projects undertaken and many more. Bottomline, they have to satisfy what it is you are looking for to make sure they are up to task.

Choosing the right tech partner can spell the difference between successfully launching your project and watching everything crash and burn. So save yourself from frustration and take these 3 items into careful consideration.

Contributor:
Gabriel Valmonte
Marketing Manager


Read Next: 5 Tips for Better Coordination with Your Outsourced Tech Partner


Here at Monstar Lab Philippines, we encourage our engineers, developers, and practically all team members to share technicals skills, development hacks, and industry knowledge to the entire family.

We conduct regular Tech Talk Tuesdays (or Thursdays), more popularly known as T3 Sessions.

This helps us keep our minds sharp and always up to date with the latest in software development, mobile development, and emerging technology. You can count on the expertise of our team to design and deliver top-notch enterprise software solutions. Feel free to send us a message anytime and we’ll help you out.

Outsourced Tech Partner Coordination

5 Tips for Better Coordination with Your Outsourced Tech Partner

The world has turned into a one big economy where we can transact with people from the other side of the globe. We can now collaborate on projects with offshore tech partners without the hassle of travelling and with better coordination!

That’s the convenience technology has brought us. Thanks to various apps, web platforms and whatnot, we are no longer confined to work within a short range. This is especially true in the case of technology. Businesses regularly tap experts from other countries as IT partners to help bring to life tech products or services such as mobile applications, web applications, and the like.

But when you really think about it, getting together with an offshore partner for a project is the easy part. The challenge usually lies in coordination. We all know that this could make or break your project let alone your professional relationship.

So here are a few tips from the people who deal with this set-up on a regular basis and is making it work for both parties.

Choose Stable Communication Channels

With all the communication tools available out there, bridging the physical gap has now become manageable. All you need to do is agree on the most convenient platform for both of you. A lot of things has to be considered but top of the list would be stable internet connection.

In our case we use Zoom for video conferencing a lot. It has a free option that you can upgrade when you see fit. We also use Slack for immediate correspondence and sending files across team members. But bottom line is to use technology you are both comfortable with and easy enough to learn and navigate.

Understand Their Culture

At the end of the day, we are still working with people of different backgrounds, values and culture. In order to get off on the right foot, get an understanding of your partner’s cultural background. It doesn’t have to go really deep. Just go deep enough so that you are sure that you don’t unknowingly cross cultural boundaries that might be taken the wrong way. An example would be how you address people of senior positions from countries that value hierarchy such as Japan.

Use A Common Language

The key to good coordination is, of course,  good communication. If you can’t properly understand each other, there’s a good chance that your project will be tricky to navigate and would require an unnecessary lot of back and forth.

To handle this, you may want to make sure that your IT partner can speak the same language or if not, at least have a very capable communicator as the point person for all discussions.

Always Agree on Set Deliverables

Setting expectations will make coordination easier and more productive. It’s good to be on the same page whenever you do your periodic touchpoints. This helps move the project along as you look at and discuss important pre-identified action items on your task lists.

Set Up A Feedback Mechanism

Agree and come up with a periodic feedback mechanism with your IT partner. This allows for transparency between parties and help mitigate issues beyond just the actual scope of work. This helps to quickly identify and rectify issues before they become big enough to break down communications and eventually the quality of work in the project.

Of course it takes beyond 5 things to ensure smooth coordination with your offshore IT partner, but starting on these will definitely be a good place to start. Coordination is critical in these types of arrangements that’s why choosing a relatable, reliable, and capable tech partner should still be number one priority!


Read Next: 3 Outsourced Tech Partner Must-Haves


We take customer service seriously here at Monstar Lab Philippines. That’s why we ensure excellence in coordination and communication, thanks largely to over a decade of offshore engagement experience.

Let us know what problems you are trying to solve and let’s craft the best technological solution for you . You can count on the expertise of our team to design and deliver top-notch enterprise software solutions. Feel free to send us a message anytime and we’ll help you out.

You can also reach out to us.