Simple Payments for India 🐘

DUpTabpUQAEE_cR.jpg
Automatticians and my fabulous turban.

This is a summary of the presentation I gave in Mumbai in February of 2018.

Prefer PDF format? (4.1 MB)

Why Simple Payments?

I am a public school teacher and not a web-designer. I decided to start a new business (…). After I found the “Add Payment” button I knew I could do it. I went public and started taking payments two days later. The new button simplified everything.

Simple Payments is a feature of Jetpack plugin and WordPress.com that enables you to sell products on your site. I had a privilege of being a part of the team that launched it in 2017.

Yes, there is WooCommerce with ample functionality, various payment gateways, plugins and options.

But starting with WooCommerce is not easy. The choice and configuration can be overwhelming, especially for someone that just wants to test their business. WooCommerce has a fantastic wizard now that simplifies the process considerably, but there is always a tradeoff between functionality and ease of use.

Simple Payments is designed for an easy start. No, there are no other payment gateways, no plugins, no automated fulfilment, no AI. Easy start, that is it.

But often, the start is the hard part.

 

PayPal is coming to India

As of now (feb 2018), PayPal is gearing towards entering the Indian market. Simple Payments is built on top of PayPal Express Checkout.

  • Launching soon for general users.
  • Testing with large merchants at the moment (BookMyShow, Yatra)
  • Accepting and payout in INR
  • Right now, you can collect USD and pay out to your bank account that will convert to INR

How hard it is to start with Simple Payments?

Zrzut ekranu 2018-01-25 o 13.15.18.png
That is all information you have to provide to start selling

To start selling with Simple Payments, you need:

  • PayPal account
  • One of the plans:
    • Jetpack Premium (₹690/m, ₹6900/y)
 OR
    • WordPress.com Premium (₹575/m, ₹6900/y)
  • One form to fill out

Yes, that is it. One form. And in this form the required fields are:

  • Name of what you are selling
  • Price / currency
  • Email that will be connected to PayPal account

One more thing…

You don’t really need a PayPal account.

PayPal has a feature called “progressive onboarding”. That means, if you receive money destined to the email address that does not have PP account yet, money will be waiting for you to claim until you create such account.

Zrzut ekranu 2018-01-25 o 13.26.27.png
Email badgering me to claim the money I earned

Simple is also sustainable

Back in the day, I was running an e-marketing agency and we also did WooCommerce stores. Whenever something broke, API changed, etc – I had lots of work to keep it all running. Sometimes client changed API keys to PayPal, or a setting got deprecated. But with Simple Payments:

  • No payment gateway setup
  • No access token keys, app secrets, etc
  • Reliant only on 1 plugin (Jetpack) and external API (WPCOM) that is heavily tested every day
  • Auto updates and backups built in (JP „undo”  feature)

No late night calls from your customers that something broke!

Successful Simple Payments sellers

This is a small gallery of successful Simple Payments sellers. As you can see, there are various business models.

 

Minnetonka Fishing Team

High school fishing championship participation.

Zrzut ekranu 2018-01-25 o 10.41.52.png

 

Tom Bol Photo workshops

You gussed it – photography classes 🙂

Zrzut ekranu 2018-01-25 o 11.34.25.png

 

Smart Food Solutions

Prepared meal plans

Zrzut ekranu 2018-01-25 o 12.36.27.png

Beltaine Cottage

Self-published books.

Zrzut ekranu 2018-01-25 o 11.39.36.png

 

North Winds Wilderness School

Outdoor wilderness classes.

Zrzut ekranu 2018-01-25 o 10.54.37.png

 

Bend it like Budha

Yoga retreats

Zrzut ekranu 2018-01-25 o 12.35.47.png

Under the hood 🔧

So what are we doing there to make it happen?

  1. Customer clicks „Pay with PayPal”
  2. PP JS makes request to WPCOM endpoint
  3. WPCOM endpoint calls transaction/create PP endpoint
  4. Returns transaction id to your site JavaScript
  5. JavaScript opens PayPal dialog
  6. Customer enters CC details, clicks „pay”
  7. PayPal JavaScript calls WPCOM endpoint to finish transaction
  8. WPCOM endpoint calls PP transaction/execute
  9. Passes success message to your site
  10. Sends you notification and email
  11. Displays result to the customer

 

All data stored on your site

  • `jp_pay_order` custom post type
  • `jp_pay_product` custom post type

Start selling!

78eX.gif

Simple Payments is designed to get you started. Don’t over-engineer your solution if you are not yet selling anything. Start simple, test your business and then scale with WooCommerce once you have more orders than you can deal with.

 

More resources

React Native Isomorphic app in a weekend

TeamParrot is an app that reads your Slack scrollback out loud so you can listen to your coworkers while doing awesome stuff.

Because I work in a distributed company and have coworkers all around the globe, every day I wake up to a full wall of scrollback to go through. Some of it is actionable, some of it is just chatter, but its good to at least have a vague notion of what is going on.

I also value efficiency and not wasting time, so I came up with TeamParrot.

Having an app in the app store was on my Bucketlist for some time, so I jumped on this simple idea like an angry Twitter user on a chance to humiliate someone.

These days, I usually work with React and React Native seems like an ingenious way to get my feet wet in the pool of app development

Before we even start, I assume you read the official docs – they are pretty decent these days.

Starting a React Native project

Starting an RN project was pretty easy and as many projects these days, starts with a generator.

You have to install RN as a global npm module and then you generete a project, as noted here:

npm install -g react-native-cli
react-native init AwesomeProject
cd AwesomeProject
react-native run-ios

You just provide a name and then the tool creates a project for you.

The project builds in XCode and Android SDK.

Few notes about Android sdk:

  • You DONT need Android studio and it is a terrible piece of software
  • Android SDK is a set of command-line tools
  • These tools install their own libraries, device images, etc. There are multiple versions and each of the files is surprisingly huge. That is one of the reasons that Android development is such a hassle. I would really love some cloud build system
  • Emulating is also a hassle. Genymotion was good solution for me, but you need to point it at the same image files you use to build your software

Renaming a React Native project

Of course I provided a bad name and then had to rename my project. Read about it here:

https://piszek.com/2017/02/07/react-native-rename-my-app/

Using external APIs

Your app needs to connect to an external Oauth? We got you covered!

https://piszek.com/2017/01/29/react-native-oauth/

Using libraries / internal APIs

As you may have heard, React Native does not use WebView like many other JavaScript mobile app technologies ( Cordova for example ).

In RN, higher-order native components ( sometimes big pieces of an app ) are used to piece together you interface. These components have JavaScript wrappers and you can use them as you would any React component. Because these components are pure native, the app behaves just as fast as native. Many components are already wrapped by Facebook in the official repo, even more have sprouted as npm modules. I needed Text-to-speech library for TeamParrot and I found a few.

If you are using a component/library that adds some native code, you need to link it.That means adding the native code parts to the build process of your app. Usually, the automatic tool `rnpm` will do that for you, so when you type

rnpm link

or

rnpm link library-name

You should be done.

Sometimes it involves few manual steps – putting imports here and there in the native code.

Adding flair

Few pieces like that require fiddling with the native code are Icons and Fonts:

https://piszek.com/2017/02/01/react-native-vector-icons-fontawesome-and-others/

Files structure and isomorphic code 

zrzut-ekranu-2016-11-12-o-19-37-20

By default, you will have `index.ios.js` and `index.android.js` and as you can imagine – one is an entry point for your app in iOS, the other is the entry point for you Android code.

By default, your codebases are separate, but don’t be discouraged! There is one weird trick that programmers will hate you for!

Just put this both in `index.ios.js` and `index.android.js` :

import { AppRegistry } from ‘react-native’;
import Main from ‘./main’;
AppRegistry.registerComponent( ‘YourApp’, () => Main );

That way, both of your entry points use the same main component.

My folder structure of choice is

  • android
  • app.js – main logic
  • assets
  • components – these are dumb components
  • config
  • index.android.js
  • index.ios.js
  • index.web.js
  • ios
  • lib
  • login.js
  • node_modules
  • package.json

What is “index.web.js” you ask? Well, this app builds in web too! That means that I can develop my UI in chrome devtools !

Read more about isomorphic prototyping here

Release

Is your App ready for the big day? Not so fast! You have to submit it to the review.

Releasing in App Store

  1. Get Apple developer account
  2. Register yourself in itunesconnect
  3. Create your provisioning keys in XCode
  4. Create a bundle
  5. Sign it
  6. Upload to App store
  7. If you want to invite beta testers, you still need to submit it for a review

You want to update your app post release? Dont forget to configure CodePush! 

Maketing

 That is an entry even in itself and maybe a post for later!

But with these steps you should be able to make most of the simple apps out there.

Some other valuable links

React Native Isomorphic app over the weekend

This article is part of my “React Native Isomorphic app over the weekend” series. It shares the problems I encountered during development of TeamParrot and Headstart Journal.

[display-posts tag=”React-Native-Weekend” wrapper=”ul”]

I wanna be a programmer! A journey.

Ordinary World

Chuck was few years into his career. He was sitting at a desk for most of the day, doing menial and repeatable tasks, filling out Excel spreadsheets and agonizing over “ASAP” PowerPoint presentations that nobody really paid attention to during meetings that were absolutely unnecessary.

But the absolute majority of his day was consumed by Facebook. Be it boredom or burnout, he compulsively checked his stream. And to add salt to the injury, pretty often he would stumble into a story how those fresh-out-of-college programmer-people got an obscene salary, office restaurant, laundry, assistant or something as ridiculous as an office with michelin star-train chefs for YOUR DOG. No, seriously.

Call to adventure

Chuck said to himself: I wanna be a programmer! I have plenty of friends in the industry and I will ask them what to do.

Refusal of the Call

Lets start with education. I don’t have any formal engineering education! These people had to learn this in school, didn’t they? Maybe it’s not such a great plan, I don’t want to spend another 3 years studying something, do I?

Supernatural Aid

After a chat with one of his friends, he learned that IT is one of those weird professional industries, where formal education is not that important. In many other industries, you show your diploma to convince prospective employer that indeed, you know what you are doing. But in IT, diploma is close to obsolete because the education has trouble keeping with technological progress.

You don’t need formal engineering education

Furthermore, programmers are in high demand. In Silicon Valley, companies are poaching employees from each other because the demand highly outgrew “tech talent” there.

Should I go for code bootcamp?

Bootcamp is an intensive few-weeks coding course. It worked for some of Chuck’s friends, but he knew that it would be a bad choice for him. He was always a self-learner and he despised the fact that in a group setting you need to go as slow as a dumbest person in the class or sometimes he needed more time but the group needed to push forward.

One advantage of coding bootcamp is discipline and accountability. The are in charge and they motivate and keep the score. In Poland, Coderslab appealed to him and he wasn’t girly enough for girlsjs, but he wanted to learn on his own terms.

Crossing the Treshold

SONY DSC

A friend recommended Code.org to Chuck. It was created by Facebook and few other companies as an effort to teach kids how to code. Chuck played with few lessons and decided he felt confident enough to try something more serious.

The road of trials

What programming language should I learn?

When he started asking this seemingly innocent question, clearly he had no idea what he was getting into. He didn’t mean to question anybody’s religious beliefs, but every time he brought the subject up, he got a different, strong opinion.

Chuck decided to listen to Artur’s advice and learn JavaScript. Following arguments convinced him:

  • JavaScript is one of the few languages that can be used in many layers of application. That meant that he would be able to switch positions without acquiring new language,
  • With React Native and other approaches it is now possible to also write mobile apps in JavaScript. If he decided to, he could write his own apps!,
  • JavaScript ecosystem is still growing rapidly. The demand will only grow.

So he started taking advantage of the amazing free material available on the web:

He also heard good things about a comprehensive free “How to be a programmer” guide.

The inmost cave

Contribute! Show off!

Chuck decided to call one of his friends who was responsible for hiring in a huge company.

  • “Listen”, asked Chuck, “If you are not looking at diplomas, how DO you know who to hire?”
  • In many companies it boils down to something called “technical interview”. Honestly, it’s exam-like situation, where we ask technical questions, ask you to solve some problems and generally grade you
  • Is this a reliable process?
  • No, it’s very sloppy and a bit random.
  • Ok, but how can I prepare?
  • I recommend Cracking Code Interview. These are hard and this books is really all you need to get into Google or Microsoft. But in many companies it’s MUCH easier. Usually it’s a few random questions related to specific programming language.
  • Is there something else you would recommend?
  • Open Source projects! It’s an easy way to get experience and make your CV stand out.
  • How do i start with that?
  • Start with Contributing to GitHub. There are plenty of projects that would appreciate help. You will learn A LOT! Pro tip: Best way is to try to set up the project and start by fixing the “README” files. If you had to overcome some obstacle – fix the readme’s before the code. The maintainers of the project will appreciate your help and it will count as contribution. Also check out this guide on starting your Open Source contributions
  • Thanks for the chat!

The supreme ordeal

How do I get motivation?

At this point Chuck felt a bit overwhelmed by possibilities and work to be done. Fortunately, one of his friends had a masters degree in psychology, so he asked him how to find a drive and strength to push forward.

His friend responded:

I have learned more about self-motivation from “Awaken the giant within” by Tony Robbins than during 5 years of psychology.

The book was a splendid recommendation. Chuck never felt so driven to get this done!

Reward

How much will I earn? How to find a job?

Chuck started asking himself what he should learn in order to get a job. What are the requirements? He heard it’s much better to just look for the offer in specific programming language he knew, so he can focus on improving his skills before he starts learning more.

The Road Back

I want to work remotely, like this Artur person!

What is this remote work? How come Artur is writing posts from all over the globe? Chuck managed to call Artur and ask how to get remote work

“Chuck, listen: there are some fully-distributed companies, but they are only functioning because people there are self-driven. It’s hard to control people when they are not in the office, so we need to be very careful in hiring. Almost always they require prior experience and I highly recommend first starting in some other company”

Resurrection

What’s next?

At the beginning of his programming career, Chuck decided to go for big / medium company. He heard, that he definitely should not join “a cool startup of his friend”. It could be bad for him and the startup.

  • Big company has processes and resources to teach more basics
  • His shortcomings will have little impact on the final result
  • There will be more “newbies”, so he wont feel like the only one without 10+ years of experience
  • There will be plenty patterns / good practices to absorb
  • In a big company it’s much easier to know what he doesn’t know

Chuck got a cool job at Samsung. He decided that he will learn constantly in his new job and after 2 years of corporate experience, he will try to step up the corporate ladder or get a better position somewhere else. Changing job in tech every ~3 years is considered normal.

Be smart, be like Chuck. Be a programmer. It’s awesome.

Return

Why are these header titles so weird?

Secret patterns of flavour

In March 2016, while helping to organize TEDxWarsaw, I had a great pleasure of working with James Briscione on his amazing talk “Secret Patterns of flavour”. This fulfilled my Bucketlist item #4.

James is a head of Institute of Culinary Education in New York and together with IBM created “Cognitive Cooking with Chef Watson” book and app. He explores the science of flavour and how different chemicals come together to create a symphony of taste we all enjoy and crave. Since I call myself a Cognitive Engineer and am a foodie, Cognitive Cooking seemed like something extremely interesting and I jumped at first opportunity to help.

Finally, we have a recording to show James’s amazing work:

 

For me personally, it was an amazing journey and a great privilege. James lives on the bleeding edge of cuisine innovation and it was inspiring to meet him and see the final talk and learn a lot!

Some interesting links

 

So you want to work at Automattic?

Today, it’s been precisely 6 months since I joined Automattic as JavaScript wrangler. All you’ve heard about how awesome this company is in fact an understatement!

It is out of this world!

IMG_0951
Working from out of this world.

I have started a blog dedicated to helping you get hired remotely. I have transfered this post there Click here to read -> .

PS: Working in Silicon Valley company was my Bucketlist #26

LearnMinder – Teaching kids how to code

LearnMinder is a SmartPhone app that blocks internet access until a homework / coding challenge is solved.

It is intended to be installed on a child’s smartphone. Parent can set up a topic that the child needs to practice. Every time the child wants to play or browse the Internet, she/he has to first solve a challenge custom tailored to current skill level. When the challenge is solved – child can use the Internet again.

The whole challenge is presented in a narrative that “the Internet is broken” and child needs to fix a bug in the software to use it. In the process, it learns, that all services it enjoys using are created by someone, maintained constantly and it is not magical black box.

Day by day, challenge by challenge the child gets more comfortable in thinking how the websites / services / games are designed and that sometimes it’s actually more fun to create these products than to use them.

Future integrations include

  • Coding lessons
  • Duolingo – foreign language lessons
  • Fintess tracker – training workouts

Current state

This application will be integrated with code.org and released under Open Source license.

I decided to re-write it in React Native to iron out some kinks.

How this app came to be – EUhackathon

In 2015 I had a pleasure to participate in EUhackathon. It was a splendid 2-day hackathon held in Brussels with a theme

Tools to help teach kids digital skills

During this event I created “Interfixer“, which I’m now rebranding as “LearnMinder

During presentations, along with a fully functioning demo, I presented:

And I won!

This was a huge surprise for me, but the Jury decided that my application was best, and as a single participants, I won the 2015 edition of EU Hackathon 🙂 (You can read more here)

I met some AMAZING people (this was such a whirlwind!)

euhackathon252520435
Me with European Commission Vice-President Andrus Ansip

IMG_4438
Me with Esther Wójcicki, Sergey Brinn’s mother-in-law

$4 SmartHome

 

Firenet is a  Siri-controlled SmartHome installation using $4 ESP8266 modules and free Firebase account

 

Download / setup

Installation instruction, screenshots, information and code on GitHub

Features

  • Siri Control
  • Wireless control over $4 ESP8266 modules
  • AC/DC current control
  • RGB LED strip control, Sunrise simulation
  • IFTTT integration
    • Presence sensing
    • Google Calendar intogration
    • Notifications
  • Device shadows (keeping last device state), notification on device disconnection (ex. when power fails)
  • Google / Facebok / Github… etc login and auth
  • Triggers that can start a series of tasks
  • Websocket API
  • REST API
  • React / Firebase web app
  • Runs on a free Google Firebase plan

Some screenshots

 

Devices list Main menu RGB lamp control Composing triggers

This actually was on my dream list for a while and it’s a #184 in my bucketlist

Evernote: Using Online Notes for Performing Qualitative Research

In June issue of Qualitative Sociology Review (Issue here) you can find mine and Krzysztof Stachura’s paper about using Evernote platform in the course of academic research. Please, keep in mind that paper is in Polish.

Abstract

The paper is a presentation of potential ways to use Evernote as a simple and cheap alternative to professional CAQDA (Computer-Assisted Qualitative Data Analysis) software packages, along with pointing specific limitations of the tool.
The main functions useful in research and for analytic purposes are depicted, as well as techniques that enable the application of grounded theory methodology using Evernote are. Moreover, similarities and differences between Evernote and NVivo 10 are presented, and the analytical perspectives for the near future concerning the evolution of Evernote are drawn. 

KeywordsEvernote, CAQDA, qualitative research, organizing data, NVivo

Download

Warning: The paper is in Polish

You can download paper from QualitativeSociologyReview.org [PDF]