Desmond  Gerber

Desmond Gerber


Open Source is revitalizing the payphone

One of the founders of the PhilTel open source project shares why free-to-use payphones are critical to social infrastructure.

Phones used to act as the host for computer communication. Modems sent signals from computer to computer by utilizing the phone network. In today's world, though, computers have become the host for telephony apps. Phones aren't really phones any more, they're literal computers. This has enabled some amazing technology, but many people wonder whether we've lost something by giving up the concept of public phones. The PhilTel project in Philadelphia is seeking to change the trajectory of phone communication by reviving some old concepts. I was intrigued, so I spoke to Mike Dank about this exciting and unexpected development.

Klaatu: What's PhilTel?

Mike Dank: PhilTel is a telephone collective based in Philadelphia, Pennsylvania, focusing on making communications accessible to everyone by installing free-to-use payphones. While you'll be able to make standard telephone calls through our phones, we're also focusing on offering interesting services or experiences. We don't want to only facilitate human-to-human interaction but also human-to-machine interaction and give people an environment where they can explore the telephone network and learn from it.

Klaatu: Why are you installing free-to-use payphones? Surely everyone has a mobile phone these days.

Mike: Surprisingly, there are more people out there without mobile phones than you may think! While there are many that won't have a mobile phone due to socioeconomic disparities, others choose not to have them because of concerns about privacy, health, and the effects of being "plugged in" or reachable 24/7. My co-founder on this project does not own a mobile phone himself, so we have first-hand experience with what it is like to not have a phone on your person at all times and how important it is for there to be access to public telephones.

Philadelphia in particular has a lot of payphone use, even as payphone companies have been steadily removing phones from service year after year. Residents who rely on these phones are being increasingly marginalized and if this trend continues, many will be left without a communication platform they need to carry out their lives. At PhilTel, we are committed to increase access to telephone-mediated services through the preservation of public, free-to-use telephone infrastructure.

Klaatu: You obviously know a lot about phones. It makes me think of the phone phreaking scene in the 1950s.

Mike: Yes, "phone phreaking" is a term used to describe the culture and activities of people who explore the phone system and equipment connected to it. While people have been phreaking since the 1950s, it rose to prominence in the 1970s with the advent of the "blue box": a hobbyist-built, pocket sized device that could produce tones which would allow the user to place free long-distance calls. Later phreaking devices such as the "red box," commonly made by modifying a pocket tone dialer, would allow the user to imitate coin tones at a payphone so calls could be made for free. It's important to note that phone phreaking is still alive and well today, but the focus is on discovery and gaining an understanding of how the phone system works while communications fraud is now widely frowned upon.

In many ways, hacking and hacker culture can be seen as an offshoot of phreaking, and it is undeniable that phreaking had a direct influence on hacking as we know it today. With the advent of personal computing in the 1980s, many curious and tech-savvy people would communicate over bulletin board systems to share information about exploring the phone system and, increasingly, the computers that were connected to it.

Anyone who identifies as a hacker these days can trace the culture back to those early days of phone phreaking where the curious spent days or months or weeks doing experiments with the phone system. PhilTel is a "phreak-friendly" network, and we not only encourage exploration but also have resources to emulate aspects of the phone network of a bygone era. Do you want to use your vintage (or modern recreational) "blue box" or "red box" today? We have ways for you to do that!

Klaatu: How did you get involved with PhilTel?

Mike: Well, I'm one of the PhilTel co-founders! PhilTel draws direct inspiration from a similar project known as Futel, based out of Portland, Oregon. My co-founder and I met a few years back and bonded over our love of telephone infrastructure, including visiting old telephone buildings and finding payphones scattered throughout the city. We had discussions about how it could be beneficial to start a project where we installed and operated payphones and we realized the only thing holding us back was simply sitting down and working out the details for how to do it!

Klaatu: Do you have a background in telephony?

Mike: I don't have any background in telephony myself, but I've had an interest in it since I bought my first Raspberry Pi in 2012 and went about setting up my own PBX so I could give extensions to different phones in my house and allow them to call one another. While I have a formal background in software engineering, I identify more as a hacker who likes to tinker and learn as I go. I'm very lucky to be working with my co-founder as he became interested in telephony in high school and gradually became interested in phreaking as well as VoIP. Nowadays, he primarily does telecom-related software development, including freelance Asterisk development for businesses and development of features and capabilities for telephone hobbyists.

Klaatu: Speaking of Asterisk, what other open source technologies are you using to make this project happen?

Mike: We strive to use as much open source technology as we can with PhilTel! Each payphone site that we will set up has a router running OpenWRT and WireGuard to get a secure VPN connection to our server. Our Linux-based server runs Asterisk, an open source PBX (private branch exchange) toolkit, to connect our phones to the PSTN and other internal services or hobbyist or collector phone networks. We are very fortunate in that my co-founder has an in-depth knowledge with Asterisk as he is a regular code contributor.

Klaatu: How can people get involved with PhilTel?

Mike: There are numerous ways to get involved! If you're a hacker, artist, or engineer with an interest in payphones and things that can be done with and through them, we'd love to hear from you (especially if you're an artist working with audio.) We're always looking for new things to add or new perspectives! If you're local to the Philadelphia area and have ownership of a physical location where we may put a phone, we're always looking for installation sites! If anything about PhilTel interests you, be sure to visit our website for more information and ways to contact us!

Original article source at:

#opensource #mobile 

Open Source is revitalizing the payphone

9 features of a user-friendly mobile app

The online market never closes. Today, if your business is to be successful in attracting and retaining customers, the public must be able to shop, learn and interact with your business 24/7. And with more and more users using their phones as primary devices, a well-designed mobile app is a must.

However, designing an effective mobile application is not easy. A well-designed application not only allows users to transact, gather information, and connect to your business, but also has an easy-to-navigate interface that doesn’t frustrate users and features that ensure their personal information is secure.

Building mobile apps that make it easy for users to get what they want will keep them coming back to the app — and your business — to learn more.

This blog will discuss the top 9 features of a user-friendly mobile app.

Read more:

#mobile-apps #mobile #ui #ux #user-experience 

9 features of a user-friendly mobile app
Dexter  Goodwin

Dexter Goodwin


Rax: A Progressive Framework for Building Universal Applications


Rax is a progressive framework for building universal applications.

💌 Write Once, Run Anywhere: write one codebase, run with Web, Weex, Node.js, Alibaba MiniApp, and WeChat MiniProgram. Rax can be used with additional containers that implement it's driver specification.

Fast: better performance and a tiny size(📦~6KB) when compared to React using the same API.

📤 Easy: quick start with zero configuration, all features like Progressive Web App (PWA), Server-Side Rendering (SSR), and Function as a service (FaaS) can be used out of the box.

Quick Start 🥢🍚

Start from command line

Create a new Rax project using create-rax:

$ npm init rax <YourProjectName>

npm init <initializer> is available in npm 6+

Start local server to launch project:

$ cd <YourProjectName>
$ npm install
$ npm run start

Start from VS Code

You need to install the AppWorks Pack and invoke the Create Application command from the VS Code command palette (Ctrl + Shift + P or Cmd + Shift + P on Mac):


Developer Tools 🛠

You can inspect and modify the state of your Rax components at runtime using the Rax Developer Tools browser extension, however the extension will not work in production mode.

  1. Install the Chrome Rax Developer Tools extension
  2. Reload and go to the 'Rax' tab in the browser's development tools

VS Code Extension

You can use AppWorks Pack to get better development experience.

Awesome Things 📝

You can find some awesome things in awesome-rax.

Contributing 🧼

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing.

Community support

For general help using Rax, please refer to the official site. For additional help, you can use one of these channels to ask a question:

Download Details:

Author: Alibaba
Source Code: 
License: View license

#typescript #javascript #mobile #framework 

Rax: A Progressive Framework for Building Universal Applications
Rupert  Beatty

Rupert Beatty


Couchbase-lite-ios: Couchbase Lite for iOS and MacOS

Couchbase Lite for iOS and MacOS

Couchbase Lite is an embedded lightweight, document-oriented (NoSQL), syncable database engine.

Couchbase Lite implementation is on top of Couchbase Lite Core, which is also a new cross-platform implementation of database CRUD and query features, as well as document versioning.


  • iOS 9.0+ | macOS 10.11+
  • Xcode 10.3+


Swift Package


  • XCode 12+

Community Edition

dependencies: [
        .package(name: "CouchbaseLiteSwift",
                 url: "", 
                 from: "3.0.0"),

Enterprise Edition

dependencies: [
        .package(name: "CouchbaseLiteSwift",
                 url: "", 
                 from: "3.0.0"),

More detailed information on how to setup is available here: swift package manager


You can use CocoaPods to install CouchbaseLite for Objective-C API or CouchbaseLiteSwift for Swift API by adding it in your Podfile:


Community Edition

target '<your target name>' do
  pod 'CouchbaseLite'

Enterprise Edition

target '<your target name>' do
  pod 'CouchbaseLite-Enterprise'


Community Edition

target '<your target name>' do
  pod 'CouchbaseLite-Swift'

Enterprise Edition

target '<your target name>' do
  pod 'CouchbaseLite-Swift-Enterprise'


You can use Carthage to install CouchbaseLite by adding it in your Cartfile:

Community Edition

binary ""

Enterprise Edition

binary ""

When running carthage update or build, Carthage will build both CouchbaseLite and CouchbaseLiteSwift framework.

How to build the framework files.

  1. Clone the repo and update submodules
$ git clone
$ cd couchbase-lite-ios
$ git submodule update --init --recursive

If not already installed, install doxygen, brew install doxygen

Run ./Scripts/ to build a platform framework which could be either an Objective-C or a Swift framework. The supported platforms include iOS, tvOS, and macOS.

$ ./Scripts/ -s "CBL ObjC" -p iOS -o output    // For building the ObjC framework for iOS
$ ./Scripts/ -s "CBL Swift" -p iOS -o output   // For building the Swift framework for iOS


Sample Apps

  • Todo : Objective-C and Swift

Download Details:

Author: Couchbase
Source Code: 
License: Apache-2.0 license

#macos #swift #ios #sync #mobile 

Couchbase-lite-ios: Couchbase Lite for iOS and MacOS
Gordon  Matlala

Gordon Matlala


Free to Use Static Generated Website Template for Your Mobile App

Mobile App Landing Page Template

📱 Free to use static generated landing page template for your mobile app

💡 Features

Mobile App Landing Page Template comes with pre-installed features and options:

  • Display app icon
  • Show unlimited app screenshots
  • Link to Google Play
  • Link to the AppStore
  • Link to the Web App
  • Press mention section
  • Product Hunt floating prompt
  • Privacy policy Page
  • Google Analytics
  • Cookie Consent
  • Automatic dark theme
  • Doorbell widget
  • Github forking banner

✨ Demo

Check out websites using the Mobile App Template:

📖 How to use

The normal way

  1. Fork this project
  2. Edit _config.yml, feel free to commut/uncomment what you need (google analtytics, or github for example)
  3. Edit _data/app.yml with your app data
  4. Update the text from _data/strings.yml, you can customize there the footer's links
  5. Edit icons and screenshots inside the _images folder and icon.png in the root
  6. Edit _src/index.js to update the product hunt modal (or to remove it) and to remove the darkmode plugin if you don't want it
  7. Deploy (on netlify, gitpages or surge, they are all free)

The no-code way

  1. Go to
  2. Edit the settings on the left part
  3. Click on the Publish button then Save Webpage as .zip
  4. Unzip and upload the folder to your server (you can drag'n'drop it in Netlify to host it there for free)

⚙️ How to run


  • NodeJS
  • Ruby, Bundler


npm install
bundler install


npm start


npm run build

Deploy to netlify (for free)

Deploy to Netlify

More documentation

This templates uses Jekyll-webpack-boilerplate, read more documentation there.

🤝 Contributing

Contributions, issues and feature requests are welcome!

Download Details:

Author: Sandoche
Source Code: 
License: MIT license

#jekyll #android #template #ios #mobile 

Free to Use Static Generated Website Template for Your Mobile App
Reid  Rohan

Reid Rohan


Vue-storefront: The Open-source Frontend for any eCommerce


Lightning-Fast Frontend Platform for Headless Commerce

Vue Storefront is the most popular and most advanced Frontend Platform for eCommerce.


Russia’s military aggression against Ukraine.

How can you support Ukrainian civil society?

All help is needed. If you are not able to help locally, by sheltering a fellow Ukrainian, you can also:



The business challenges

Vue Storefront solves a set of key business challenges from the world of the shopping experience. Our goal is to provide the solution with:

  • ultrafast front-end for the store - with the PWA approach, we can now render the catalog of products within milliseconds;
  • endurance for traffic overloads on the store;
  • off-line shopping capabilities;
  • smooth shopping experience close to the user experience from the native mobile applications;
  • all-in-one front-end for desktop and mobile screens with no necessity for maintaining 3 or more applications for different touchpoints (web browser, Android, iOS, etc.).
  • rapid development without architecture limitations.

The headless architecture

Vue Storefront - Headless Architecture


If you like the ideas behind Vue Storefront and want to become a contributor - join our Discord server, check the list of the active issues or contact us directly via contributors(at)vuestorefront(dot)io.

If you have discovered a 🐜 or have feature suggestion, feel free to create an issue on Github.

Support us

Vue Storefront is and always will be Open Source, released under MIT Licence.

You can support us in various ways:

  • Contribute - this is how the Core Team is supporting the project!
  • Evangelize - tweet about us, take some speaking slot at a tech conference, etc.


Vue Storefront is a Community effort brought to You by our great Core Team and supported by the following companies.

See Vue Storefront partners directory

Download Details:

Author: Vuestorefront
Source Code: 
License: MIT license

#typescript #opensource #ecommerce #mobile 

Vue-storefront: The Open-source Frontend for any eCommerce
Reid  Rohan

Reid Rohan


Interact.js: JavaScript Drag & Drop, Resizing and Multi-touch Gestures


JavaScript drag and drop, resizing and multi-touch gestures with inertia and snapping for modern browsers (and also IE9+).

Features include:

  • inertia and snapping
  • multi-touch, simultaneous interactions
  • cross browser and device, supporting the desktop and mobile versions of Chrome, Firefox and Opera as well as Internet Explorer 9+
  • interaction with SVG elements
  • being standalone and customizable
  • not modifying the DOM except to change the cursor (but you can disable that)


  • npm: npm install interactjs
  • jsDelivr CDN: <script src=""></script>
  • unpkg CDN: <script src=""></script>
  • Rails 5.1+:
    1. yarn add interactjs
    2. //= require interactjs/interact
  • Webjars SBT/Play 2: libraryDependencies ++= Seq("org.webjars.npm" % "interactjs" % version)

Typescript definitions

The project is written in Typescript and the npm package includes the type definitions, but if you need the typings alone, you can install them with:

npm install --save-dev @interactjs/types



var pixelSize = 16;

    modifiers: [
        // snap to the corners of a grid
        targets: [
          interact.snappers.grid({ x: pixelSize, y: pixelSize }),
    listeners: {
      // draw colored squares on move
      move: function (event) {
        var context ='2d'),
            // calculate the angle of the drag direction
            dragAngle = 180 * Math.atan2(event.dx, event.dy) / Math.PI;

        // set color based on drag angle and speed
        context.fillStyle = 'hsl(' + dragAngle + ', 86%, '
                            + (30 + Math.min(event.speed / 1000, 1) * 50) + '%)';

        // draw squares
        context.fillRect(event.pageX - pixelSize / 2, event.pageY - pixelSize / 2,
                         pixelSize, pixelSize);
  // clear the canvas on doubletap
  .on('doubletap', function (event) {
    var context ='2d');

    context.clearRect(0, 0, context.canvas.width, context.canvas.height);

  function resizeCanvases () {
    []'.rainbow-pixel-canvas'), function (canvas) {
      canvas.width = document.body.clientWidth;
      canvas.height = window.innerHeight * 0.7;

  // interact.js can also add DOM event listeners
  interact(document).on('DOMContentLoaded', resizeCanvases);
  interact(window).on('resize', resizeCanvases);

See the above code in action at

Download Details:

Author: Taye
Source Code: 
License: MIT license

#typescript #javascript #mobile 

Interact.js: JavaScript Drag & Drop, Resizing and Multi-touch Gestures
Rupert  Beatty

Rupert Beatty


A Powerful and Completely Customizable Media Player for iOS


A powerful and completely customizable media player for iOS.



  • Branding
    • Flexible skinning. Add a watermark, add/remove/move/resize interface elements, change their appearances and much more.
    • Easily set up A/B tests. You can manage multiple player skins and configurations. Player view controllers can load configuration data from a local JSON file or remote JSON data. You also have the option to initialize and pass configuration objects programmatically, which allows for greater flexibility.
  • Engagement
    • Comes with a built-in share button.
    • Standard sharing behavior can easily be modified.
    • Show any view controller as pre-roll or post-roll content.
    • Powerful overlay system. Add any view controller as an overlay to your video. Make them permanently visible, set them to appear in defined playback time intervals, or while playback is paused.
  • 100% documented.

Future plans

  • Well defined and extensive NSNotifications.
  • Volume button and volume slider elements.
  • Airplay support.
  • Plugin support.
  • Pre-bundled analytics plugins for various platforms.
  • VAST support.
  • Monetization.



Add the following line in your Podfile.

pod "MobilePlayer"


Add the following line to your Cartfile.

github "mobileplayer/mobileplayer-ios"


import MobilePlayer

let playerVC = MobilePlayerViewController(contentURL: videoURL)
playerVC.title = "Vanilla Player - \(videoTitle)"
playerVC.activityItems = [videoURL] // Check the documentation for more information.



Initialize using local configuration file

let bundle = NSBundle.mainBundle()
let config = MobilePlayerConfig(fileURL: bundle.URLForResource(
  withExtension: "json")!)
let playerVC = MobilePlayerViewController(
  contentURL: videoURL,
  config: config)
playerVC.title = "Watermarked Player - \(videoTitle)"
playerVC.activityItems = [videoURL]
present(playerVC, animated: true, completion: nil)

Initialize using remote configuration data

guard let configURL = NSURL(string: "") else { return }
let playerVC = MobilePlayerViewController(
  contentURL: videoURL,
  config: MobilePlayerConfig(fileURL: configURL))
playerVC.title = "Watermarked Player - \(videoTitle)"
playerVC.activityItems = [videoURL]
present(playerVC, animated: true, completion: nil)

Configuration data

  "watermark": {
    "image": "MovielalaLogo"

Without a configuration file URL

let playerVC = MobilePlayerViewController(
  contentURL: videoURL,
  config: MobilePlayerConfig(
    dictionary: ["watermark": ["image": "MovielalaLogo"]]))
playerVC.title = "Watermarked Player - \(videoTitle)"
playerVC.activityItems = [videoURL]
present(playerVC, animated: true, completion: nil)

Result example-customization


  "watermark": {
    "image": "MovielalaLogo",
    "position": "topRight"
  "topBar": {
    "backgroundColor": ["#a60500b0", "#a60500a0"],
    "elements": [
        "type": "button",
        "identifier": "close"
        "type": "slider",
        "identifier": "playback",
        "trackHeight": 6,
        "trackCornerRadius": 3,
        "minimumTrackTintColor": "#eee",
        "availableTrackTintColor": "#9e9b9a",
        "maximumTrackTintColor": "#cccccc",
        "thumbTintColor": "#f9f9f9",
        "thumbBorderWidth": 1,
        "thumbBorderColor": "#fff",
        "marginRight": 4
  "bottomBar": {
    "backgroundColor": ["#a60500a0", "#a60500b0"],
    "elements": [
        "type": "label",
        "text": "Now Watching",
        "font": "Baskerville",
        "size": 12,
        "marginLeft": 8,
        "marginRight": 8
        "type": "label",
        "identifier": "title",
        "size": 14
        "type": "button",
        "identifier": "action"
        "type": "toggleButton",
        "identifier": "play"

For all available identifiers, check the documentation or here. Same identifier value shouldn't be used more than once in a single configuration.

Result example-skinning

Example designs example-design-skinning

Showing overlays

let playerVC = MobilePlayerViewController(contentURL: videoURL)
playerVC.title = videoTitle
playerVC.activityItems = [videoURL]
present(playerVC, animated: true, completion: nil)
ProductStore.getProduct("1", success: { product in
  guard let product = product else { return }
    BuyOverlayViewController(product: product))


Showing timed overlays

let playerVC = MobilePlayerViewController(contentURL: videoURL)
playerVC.title = videoTitle
playerVC.activityItems = [videoURL]
present(playerVC, animated: true, completion: nil)
  success: { productPlacements in
    guard let productPlacements = productPlacements else { return }
    for placement in productPlacements {
      ProductStore.getProduct(placement.productID, success: { product in
        guard let product = product else { return }
          BuyOverlayViewController(product: product),
          startingAtTime: placement.startTime,
          forDuration: placement.duration)



let playerVC = MobilePlayerViewController(
  contentURL: videoURL,
  prerollViewController: PrerollOverlayViewController())
playerVC.title = videoTitle
playerVC.activityItems = [videoURL]
present(playerVC, animated: true, completion: nil)


Pause overlay

let playerVC = MobilePlayerViewController(
  contentURL: videoURL,
  pauseOverlayViewController: PauseOverlayViewController())
playerVC.title = videoTitle
playerVC.activityItems = [videoURL]
present(playerVC, animated: true, completion: nil)

Result example-pause-overlay

Example designs example-design-pause-overlay


let playerVC = MobilePlayerViewController(
  contentURL: videoURL,
  postrollViewController: PostrollOverlayViewController())
playerVC.title = videoTitle
playerVC.activityItems = [videoURL]
present(playerVC, animated: true, completion: nil)

Result example-postroll

Example designs example-design-postroll


After cloning the repo, run the MobilePlayerExamples target to see examples for many use cases. examples


The entire documentation for the library can be found here.

Download Details:

Author: sahin
Source Code: 
License: View license

#swift #ios #players #mobile 

A Powerful and Completely Customizable Media Player for iOS
Rupert  Beatty

Rupert Beatty


Blink: Blink Mobile Shell for iOS (Mosh Based)

Blink Shell for iOS

Do Blink! Blink is the first professional, desktop-grade terminal for iOS that leverages the support of Mosh and SSH. Thus, we can unequivocally guarantee stable connections, lightning-fast speeds, and full configurations. It can and should be your all-day-long tool.

We did not create another terminal to fix your website on the go. Blink was built as a professional grade product from the onset. We started by analyzing what the must-haves were and we ended up grounding Blink on these three concepts:

  • Fast rendering: dmesg in your Unix server should be instantaneous. We can't wait even a second to render. We didn't need to reinvent the wheel to make this happen. We simply used Chromium's HTerm to ensure that rendering is perfect and fast, even with those special, tricky encodings.
  • Always on: Mosh transcends SSH's variability. Mosh overcomes the unstable and intermittent connectivity that we all associate with mobile connections. You can check your Safari without fear of having to restart the SSH connection. You can flawlessly jump from home, to the train, and then the office thanks to Mosh. Blink is rock-solid connected all the way. Mosh is readily available and can be easily installed on your server. Go to
  • Fully configurable: Blink embraces Bluetooth-coupled keyboards with gusto. Some like Caps as Esc on Vim, others Caps as Ctrl on Emacs. Blink champions them all. But there's more, because we want more. You can also add your own custom themes and fonts to Blink. During your always-on sessions, you're in your zone.

But, Blink is much more. Please read on:

  • You should command your terminal, not navigate it. Blink will jump you right into a friendly shell and it'll be clear to you how to roll.
  • The interface is straightforward. We dumped all menus and went full screen for your terminal.
  • Use swipe to move between your open connections, slide down to close them, and even pinch to zoom!
  • Configure your Blink connections by adding your own Hosts and RSA Encryption keys. Everything will look familiar and you get to work, fast!
  • We've incorporated SplitView, for those necessary Google searches and chats with coworkers.

For more information, please visit Blink Shell.

Obtaining Blink

Blink is available now on the AppStore. Check it out!

If you would like to participate on its development, we would love to have you on board! There are two ways to collaborate with the project: you can download and build Blink yourself, or you can request an invitation to help us test future versions (on the raw branch). If you want to participate on the testing, follow and tweet us @BlinkShell about your usage scenarios. Invitations will be sent out in waves, please be patient if you do not receive yours immediately.

Bugs should be reported here on GitHub. Crash reports will be automatically reported back to us thanks to HockeyApp. If you have any questions or want to make sure we do not miss on an interesting feature, please send your suggestions to our Twitter account @BlinkShell. We would love to discuss them with you! Please do not use Twitter to report bugs.

We can't wait to receive your valuable feedback. Enjoy!


We made a ton easier to build and install Blink yourself on your iOS devices through XCode. We provide a precompiled package with all the libraries for the master branch. Just extract this package in your Framework folder and build Blink.

git clone --recursive && \
cd blink && ./

Although this is the quickest method to get you up and running, if you would like to compile all libraries and resources yourself, refer to BUILD. Please let us know if you find any issues. Blink is a complex project with multiple low level dependencies and we are still looking for ways to simplify and automate the full compilation process.

Using Blink

Our UI is very straightforward and optimizes the experience on touch devices for the really important part, the terminal. You will jump right into a very simple shell, so you will know what to do. Here are a few more tricks:

  • Type 'help' to find information at the shell.
  • Use two fingers tap to create a new shell.
  • Move between shells by swapping your finger.
  • You can exit the session and get back to the shell to open a new connection.
  • You can also close a session by dragging two fingers down.
  • Use pinch gesture to increase or reduce size of text. You can also use Cmd+ or Cmd- if using the keyboard.
  • Copy and Paste by selecting text o tapping the screen.
  • Run 'config' to setup your keys. Install them to a server through ssh-copy-id.
  • Ctrl and Alt modifiers at the SmartKeys bar allow for continuous presses, like in a real keyboard.


Version 10.0

- Secured Mosh Persistent Connections and Restore.
- Image rendering!
- URL Links detection!
- Autocomplete for commands and hosts!
- Two fingers swipe up shows a new "control command" section.
- Support for Remote Copy under SSH.
- iPhone users, two fingers closes on-screen keyboard.
- More and better emojis support.
- Added "history" command to cleanup the history file.
- Bold fonts now with an option for bold or bright.
- New WWDC16 theme.
- Added Light/Dark keyboard setting.
- Support for installed fonts, so no more CSS is required.
- Control selections with keyboard! Read help for more information.
- Copy - Paste now works in unfocused mode too.
- Paste Selection.

- Faster Terminal rendering thanks to better writing flows.
- Updated HTerm!
- Updated Mosh to 1.3!
- Updated MBProgressHUD to fix race conditions.

- Fixed stuck Cmd key (deal with iOS issues).
- Fixed swipe ups triggering SmartKeys.
- Fixed Cmd as Ctrl for Ctrl+C and Ctlr+Z
- Fixed resize glitches.
- Improved loading time for terminal and custom fonts.
- Improved focus when switching between apps.
- Improved and smoother animations.
- Improved accessoryView handling if other screen is active.
- Improved all gestures internally.
- Fixed tab caching after closed.
- Fixed issues with irregular character widths misaligning columns.
- Fixed vertical rendering of fonts in some specific scenarios.
- Fixed issues with resizes and focus.
- Fixed unselect on tap.
- Fixed ssh restores crashing the app.
- Fixed external screen focus.

View all changes


  • Mosh was written by Keith Winstein, along with Anders Kaseorg, Quentin Smith, Richard Tibbetts, Keegan McAllister, and John Hood.
  • This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (
  • Libssh2
  • Entypo pictograms by Bruce Daniel

Download Details:

Author: Blinksh
Source Code: 
License: GPL-3.0 license

#swift #shell #ios #mobile 

Blink: Blink Mobile Shell for iOS (Mosh Based)
Rupert  Beatty

Rupert Beatty


Realm is A Mobile Database: A Replacement for Core Data & SQLite


Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the iOS, macOS, tvOS & watchOS versions of Realm Swift & Realm Objective-C.

Why Use Realm

  • Intuitive to Developers: Realm’s object-oriented data model is simple to learn, doesn’t need an ORM, and lets you write less code.
  • Built for Mobile: Realm is fully-featured, lightweight, and efficiently uses memory, disk space, and battery life.
  • Designed for Offline Use: Realm’s local database persists data on-disk, so apps work as well offline as they do online.
  • Device Sync: Makes it simple to keep data in sync across users, devices, and your backend in real-time. Get started for free with a template application that includes a cloud backend and Sync.

Object-Oriented: Streamline Your Code

Realm was built for mobile developers, with simplicity in mind. The idiomatic, object-oriented data model can save you thousands of lines of code.

// Define your models like regular Swift classes
class Dog: Object {
    @Persisted var name: String
    @Persisted var age: Int
class Person: Object {
    @Persisted(primaryKey: true) var _id: String
    @Persisted var name: String
    @Persisted var age: Int
    // Create relationships by pointing an Object field to another Class
    @Persisted var dogs: List<Dog>
// Use them like regular Swift objects
let dog = Dog() = "Rex"
dog.age = 1
print("name of dog: \(")

// Get the default Realm
let realm = try! Realm()
// Persist your data easily with a write transaction 
try! realm.write {

Live Objects: Build Reactive Apps

Realm’s live objects mean data updated anywhere is automatically updated everywhere.

// Open the default realm.
let realm = try! Realm()

var token: NotificationToken?

let dog = Dog() = "Max"

// Create a dog in the realm.
try! realm.write {

//  Set up the listener & observe object notifications.
token = dog.observe { change in
    switch change {
    case .change(let properties):
        for property in properties {
            print("Property '\(' changed to '\(property.newValue!)'");
    case .error(let error):
        print("An error occurred: (error)")
    case .deleted:
        print("The object was deleted.")

// Update the dog's name to see the effect.
try! realm.write { = "Wolfie"


Realm integrates directly with SwiftUI, updating your views so you don't have to.

struct ContactsView: View {
    @ObservedResults(Person.self) var persons
    var body: some View {
        List {
            ForEach(persons) { person in
            .onMove(perform: $persons.move)
            .onDelete(perform: $persons.remove)
            Button("Add") {

Fully Encrypted

Data can be encrypted in-flight and at-rest, keeping even the most sensitive data secure.

// Generate a random encryption key
var key = Data(count: 64)
_ = key.withUnsafeMutableBytes { bytes in
    SecRandomCopyBytes(kSecRandomDefault, 64, bytes)

// Add the encryption key to the config and open the realm
let config = Realm.Configuration(encryptionKey: key)
let realm = try Realm(configuration: config)

// Use the Realm as normal
let dogs = realm.objects(Dog.self).filter("name contains 'Fido'")

Getting Started

We support installing Realm via Swift Package Manager, CocoaPods, Carthage, or by importing a dynamic XCFramework.

For more information, see the detailed instructions in our docs.

Interested in getting started for free with a template application that includes a cloud backend and Sync? Create a MongoDB Atlas Account.


The documentation can be found at
The API reference is located at

Getting Help

  • Need help with your code?: Look for previous questions with therealm tag on Stack Overflow or ask a new question. For general discussion that might be considered too broad for Stack Overflow, use the Community Forum.
  • Have a bug to report? Open a GitHub issue. If possible, include the version of Realm, a full log, the Realm file, and a project that shows the issue.
  • Have a feature request? Open a GitHub issue. Tell us what the feature should do and why you want the feature.

Building Realm

In case you don't want to use the precompiled version, you can build Realm yourself from source.


  • Building Realm requires Xcode 11.x or newer.
  • Building Realm documentation requires jazzy

Once you have all the necessary prerequisites, building Realm.framework just takes a single command: sh build. You'll need an internet connection the first time you build Realm to download the core binary.

Run sh help to see all the actions you can perform (build ios/osx, generate docs, test, etc.).


See for more details!

Code of Conduct

This project adheres to the MongoDB Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to


If you use Realm and are happy with it, please consider sending out a tweet mentioning @realm to share your thoughts!

And if you don't like it, please let us know what you would like improved, so we can fix it!

Download Details:

Author: Realm
Source Code: 
License: Apache-2.0 license

#swift #ios #sync #mobile #database 

Realm is A Mobile Database: A Replacement for Core Data & SQLite

A Flutter Package for adding Mobile Money Payments

Add Mobile Money payments to your flutter apps using the FlutterWave api gateway.


  • Recieve Payments through Mobile Money in Uganda
  • Supports MTN Momo Transactions
  • Supports Airtel Money Transactions
  • Verify Charges your have made before adding value

Getting started

Get your api keys, head over to

You might also want to read about flutterwaves documentation. For this head to


Create an instance of the UgandaMobileMoney class.

const secretKey = "FLWSECK-XXXXX-X"; // flutterwave secret key
UgandaMobileMoney _mobileMoney = UgandaMobileMoney(secretKey); 

Initiate Payments

void chargeClient() async {
    MomoPayResponse response = await _mobileMoney.chargeClient(
            txRef: "MC-01928403", // should be unique for each transaction
            amount: "1500", // amount in UGX you want to charge
            email: "", // email of the person you want to charge
            phoneNumber: "256123456723", // clients phone number
            fullname: "Ojangole Joran", // full name of client
            redirectUrl: "", // redirect url after payment
            voucher: "128373", // useful for vodafone. you can ignore this
            network: // network, can be either mtn or airtel


To Verify transactions

   void verifyTransaction() {
    _mobileMoney.verifyTransaction(taxRef).then((value) {
      if (value == TransactionStatus.failed) {
            .showSnackBar(SnackBar(content: Text("Failed")));
      } else if (value == TransactionStatus.pending) {
            .showSnackBar(SnackBar(content: Text("Pending")));
      } else if (value == TransactionStatus.success) {
            .showSnackBar(SnackBar(content: Text("Success")));
      } else if (value == TransactionStatus.unknown) {
            .showSnackBar(SnackBar(content: Text("Unknown")));
      } else {
            .showSnackBar(SnackBar(content: Text("Unknown")));

Additional information

Please contact me if your have any feature requests or file issues via the respository.

You can also buy me a rolex :

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add uganda_mobile_money

With Flutter:

 $ flutter pub add uganda_mobile_money

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

  uganda_mobile_money: ^0.0.4

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:uganda_mobile_money/uganda_mobile_money.dart'; 

Download Details:

Author: jordanopos

Source Code:

#flutter #android #payment #mobile 

A Flutter Package for adding Mobile Money Payments

11 Mani


8 Tips for Choosing the Right Mobile App Development Company

In today's competitive world, this is one of the most important questions for businesses. Businesses, whether startups or Fortune 500 corporations, are actively seeking reputable Mobile app development companies to ensure the success of their mobile apps. So why not? After all, developing a mobile app is no easy task!

With thousands of apps being released every day, you must make sure that your custom mobile application stands out from the crowd. Only a successful Mobile app development company can assist you in accomplishing this!

As a result, in today's article, we will list the top eight most important factors to consider when choosing a mobile app development company! Continue reading to the end to explore all of the points, or book a free 30-minute consultation to get your project started with a leading mobile app development company.

Mobile app development is an important aspect of running a successful business, and companies all over the world are investing in it.

  • B2B mobile apps help large enterprises streamline various tedious operations while also improving inter-departmental communication.
  • The expertise of your enterprise app development partner is crucial to the success of your B2B mobile app.
  • A reputable enterprise app development company should provide you with talented resources, round-the-clock technical support, and a wide range of enterprise-grade app development services.
  • When selecting a B2B app development partner, data security and project confidentiality should be the top priorities.

What are the Tips for Choosing the Best Mobile App Development Company?

1. Market and Competitor Analysis

According to Statista, 81.3 thousand Android apps and 26 thousand iOS apps have been released as of 2022.

It is obvious that a new mobile app is released every day, but only a few of them survive the competitive market. Reason? Those few successful apps, on the other hand, have an extensive market and competitor research behind them!

As a result, if you want your app development project to succeed, you should also invest in market research and competitor analysis. Look for a mobile app development company to assist you in exploring your target market and learning about the latest trends in your niche.

With thorough market research, you can learn about your target audience's top concerns, tools & features that can address those concerns, and tactics used. by your rivals, as well as the most recent mobile app development trends in your industry.

2. Industry Knowledge

Another important consideration when selecting the best app development company for your project is to work with industry experts. You must first determine the type of mobile application you need to create. After that, you should look for a company that best suits your needs.

Attempt to find answers to the following questions:

What is your app development partner's core competency?

Is the Mobile app development company capable of creating mobile apps?

Do they have experienced app developers who are knowledgeable about the various compliances and trends in your chosen niche?

Is app development their primary focus?

In short, you should look for a reputable mobile app development company that can create mobile apps for a variety of industry verticals. It is best to go with those who have prior experience in mobile app development because this ensures their expertise in dealing with various app development challenges.

3. A Full Range of App Development Services

Developing a custom mobile application entails more than just coding. Instead, it is a comprehensive process that requires you to validate ideas, comprehend the user's point of view, and transform them into meaningful designs while testing the codes. As a result, always choose an Mobile app development company that can provide you with a complete mobile app development services package.

You should hire an app development company that can provide you with comprehensive services that are tailored to your project. For example, at Technoduce we provide our clients with a variety of app development services, including but not limited to:

Technology consulting

MVP creation

Software architecture designing

Software re-engineering

API development and integration


Automated and manual testing

Maintenance and support

Next-gen tech integration

4. Gaining Access to Next-Generation Technologies

Gone are the days when mobile apps were only used to communicate and play games. Today, a wide range of custom on-demand applications have infiltrated global industries and even ordinary people's lives.

B2B apps are widely used to manage business operations, and HR processes, and gain valuable business insights. Similarly, hospital management apps automate clinical workflows such as bed management, online appointments, patient medication tracking, inventory management, and so on.

We're sure you wanted to create a to help you beat the competition curve! As a result, always choose a mobile app development company that specializes in next-generation Mobile app development company.

Read More: B2B Mobile App Development: A Complete Guide


5. Look for portfolios, but don't use them as a deciding factor

Many businesses make the mistake of looking at portfolios before deciding on a reputable app development partner. That is not incorrect! In fact, it should be your primary focus, but not the final decision!

For example, if you intend to invest in restaurant app development but discover that your preferred company has never created a restaurant app. That doesn't mean they can't make one for you! You should be aware that app development in general does not vary all that much.

If a company has developed a real estate app like Redfin, it can undoubtedly develop a food delivery app like UberEats. APIs, Tools, and Scripting


6. Expert Advice and the Client's Role

So you've decided on the scope and features of your app and have selected a reputable app development firm. But is that enough? Consider again!

Many factors go into developing an app that stands out from the crowd while also meeting the needs of your users. Furthermore, you cannot implement anything in your app based solely on an idea. This is where expert advice comes in handy!

You can easily check the feasibility of your ideas and find ways to make them a reality with expert consultation. Aside from that, an expert consultation provides insight into the most recent industry trends, dependable next-generation technologies, and the best features for your app. As a result, select a company that provides you will receive expert consultation for your project.

Your role in app development is critical, just like expert consultation.

1. What is the size of your group?

2. What types of developers do you have on your app development team?

3. What is your desired role in your project?

Answering all of these questions allows you to determine whether or not your development partner takes your ideas and needs into account during app development. As a result, always go with the person who takes your ideas and incorporates them into your project.

At Technoduce, we always welcome our clients' ideas and will even check their feasibility during a free consultation call. We believe that every client should be involved in product development in order for us to learn more about their business goals. as well as expectations for high-quality Mobile app development

7. Design Guidelines play an important role

Aside from features and tech stack, design has a significant impact on the success of your app development. In today's competitive world, people want an app with a simple yet engaging interface. They want help navigating the app, and what better way to do so than with an informative and user-specific design?

As a result, when selecting a mobile app development partner, look for one that has innovative designers and UI/UX experts. You should look at their previous work to see what types of designs they create.

Remember that an app that is innovative and user-centric always outperforms an app with poor design and user interface. Even if you incorporate the most recent technologies and features into your

Read More:  Top 7 Tips to Hire the Best UI/UX Designers


                                Request a Quote

                           8. Data Security and Idea Confidentiality

Last but not least, your chosen mobile app development company should be capable of safeguarding your ideas and company data from third-party business access. The risk of cybersecurity has grown exponentially in today's fast-paced world. As a result, always work with a company that adheres to the best security practices to protect your app.

Aside from that, your chosen app development company should protect your ideas and data from unauthorized access. After all, your vision will be turned into a profitable reality. So, why take the risk and benefit another company? As a result, look for a company that provides an NDA (non-disclosure agreement) policy for your app development idea. To protect your information, Technoduce strictly adheres to the NDA policy.


Not to mention, our experts have years of experience working with a variety of next-generation technologies that will help you stay ahead of the competition. Furthermore, our free competitor and market analysis service with a no-obligation quote can make your app development journey more efficient, cost-effective, and result-oriented. So, why wait until you can begin today? Fill out our form right now to schedule a free 30-minute expert consultation!


                                                  Book A slot

#mobile app development#native app development#android app development#ios app development#react mobile app#hybrid app development#hybrid mobile app devellopment

8 Tips for Choosing the Right Mobile App Development Company
harvey h

harvey h


Top Handy Tips & Tools To Boost Mobile App Performance

Due to their ever-increasing popularity, #mobileapp has begun taking over large shares of global online traffic. Feature-rich. User-friendly interface. Engaging content. These are great selling points for a #mobile #app.

Although it may not be what convinces people to download your app, #performance can be a huge reason why they continue to engage with it—or simply uninstall it.

Check out the blog to know about the best #tips and tools for boosting #mobileappperformance. Click👇


Top Handy Tips & Tools To Boost Mobile App Performance
Manisha Sharma

Manisha Sharma


Top 10 Android Mobile Game Development Tools & Engines

Android has made the world so simple with its user-friendly interface. Android phone’s advanced features attract people to adopt it. People are using android phones not only for talking and internet surfing but also for entertainment purposes. For entertainment, most users are craving gaming apps. Due to high demand for smartphones and tablets, and mobile,  gaming apps are also increasing day by day. That's why the gaming industry is paying special attention to android mobile game development.

Due to technological advancements in gaming like Virtual reality, augmented reality, metaverse gaining reality, cloud gaming, and real money games, etc. are making gaming apps in high demand. All that is inspiring developers to develop advanced mobile games and for that, they are using different kinds of mobile game development tools and engines.

Basically, mobile game development tools are a kind of software that allows us to build, test and deploy apps for phones and tablets. If you want to know how to develop gaming apps then there are a lot of mobile game tools that will help you to get your desired applications. 

Here we are going to discuss the popular android game tools and engines for beginners and expert game developers. 


Game Engines for Android Mobile Game Development 

These are the five important and widely used best game development engines as follows:

  1. Unity
  2. Unreal Engine
  3. Corona SDK
  4. Cry Engine
  5. Cocos2D-X


Unity is launched by Unity technologies and is known as an all-in-one platform for mobile games. Unity is a cross-platform tool and it comes with AR, VR, 2D, and 3D features. Temple run and subway surfer is the best example of unity 3D. 60% of applications are built by using Unity. Unity is a favourite tool for unity game development companies.

Unity Platform Advantages

User friendliness, less coding and compatibility with several platforms

  • The app can be easily shared between PC, Web and mobile
  • Multiplayer gaming and multi language support

Rich asset store and easy debugging

Unreal Engine

The Unreal engine is very similar to Unity in features. This engine is developed by Epic Games.  It is basically used for stunning 3D Graphics design. For optimization of games, Unreal is counted as the most flexible gaming engine. If you are looking to feature superior graphics then unreal is best for it.

Injustice 2 and Mortal Kombat are very known examples of it.

Unreal Engine Advantages

  • Unreal is a free and open source software 
  • photo-realistic rendering images for the game
  • cross-platform game engine.
  •  stunning 3D graphics

Multi platform compatibility

Corona SDK

Corona SDK is a very powerful and free engine for mobile gaming apps. It uses lua scripting language. Graphic content and interactivity make you feel like you are a designer, not a developer. It is counted as a popular android game tool and it is very famous among developers. Mandora, Designer city, zip-zap, etc. are the best gaming examples of this.

Corona SDK Advantages

  • 100% free to use.
  • Time saving and single code based s/w.
  • Provides integrated support.
  • Faster and more powerful.

Cry Engine

Cryengine is the perfect choice for you if you love superior visuals. Tools like flowgraph help us to get an attractive, ambiance, and powerful game. It offers us the finest coding and It is very easy to learn. There are also various tools that make it richer and ahead of others.


It is a Facebook product. Here, you will get the best community support and that’s why it is very easy to learn. It is basically a 2D mobile gaming engine. Using its powerful suite and other features we can make the best 2D mobile gaming app. The Hill climb racing game is the best example of it.  For the best, we can integrate third-party libraries to get advanced features. The best thing is that we can develop games as small as 1.5 MB by using this engine.

Cocos2D-X Advantages

  • Can integrate 3rd party libraries.
  • Cross platform and open source engine.
  • Very small in size.

Tools for Android Mobile Game Development

Now, we are going to discuss the best tools for android mobile game development software that are trending nowadays.

5.React Native


Flutter is a mobile game development software, in which we can use the same codebase for different platforms like Android, iOS and Windows, etc. This kit is known for smooth and easy cross-platform mobile game development tools. Only 2D games can be developed using flutter and it is very easy to learn that’s why people are moving towards it.

Flutter Advantages

  • Best for 2D game development
  • Code Reusability

Easy in learning


If you want the best mobile game development software for Apple’s products then Swift is perfect. Swift is the official Apple programming language that works for native iOS mobile app development. It uses easy syntax that is easy to use and that makes it easy to learn and understand.

Swift Advantages: 

  • Open source 
  • Very easy to learn
  • Best for iOS Apps

Fast and secure


Buildbox is counted as the best tool because we do not need coding. In this, just select the images and import them, assign the order and your game is ready to be played. This is a unique concept where there is no need for coding, without coding we can make our game easily.

It is very helpful for those who are not from a technical background. Ball jump is the best example of build box tools.

Buildbox Advantages

  • 3D games can be developed without coding.
  • All kinds of Game templates are available.

Just drag and drop, play with animation and the game is ready.


If you are familiar with C and .Net language then there is no rocket science in it. MGFX language is used by Monogame. This framework helps us to develop multi-platform games. Bastion and the infinite fight is the best example of it.  Open source framework, versatility, and text format for easy editing make it the best tool for 2D game development.

5.React Native  

React Native is best for lightweight, smooth, and responsive interface-based 2D mobile games. For faster, cheaper, cross-platform, and fast-loaded gaming apps you should always choose react native. If you are going to develop a 2D game for multiple platforms at cheap prices then you should surely opt react native. It is released by Facebook.

React Native Advantages

  • Cost-efficient & code reusability
  • UI focussed
  • Community support
  • Live reload
  • Third party plugins

Final Thought 

In short, we can say that each platform has uniqueness and it totally depends on which programming language you know,  your budget and choices also matter in all that. So, choose the best regarding your project so you can go ahead with the best mobile game development company

#mobile #mobilegame #tools #unreal-engine 

Top 10 Android Mobile Game Development Tools & Engines

A Responsive AppBar Widget


A responsive AppBar widget.

About responsiveness:

This package uses context property which is make appbar responsive. If you want to change responsive factor in order to make more better you can use given factor parameters as well.

  1. sizeFactor- In order to change height of appbar. It can be useful between sizeFactor >= 15 && sizeFactor <= 20. When sizeFactor changed also icon height will changed as well and it will be change appbar height according to MediaQuery.of(context).size.height / sizeFactor.
  2. iconFactor- In order to change action icons' height rather using default factor, this property maybe helpful.
  3. tailingIcon and leadingIcon properties are using IconData parameter (Ex: Icons.arrow_back_ios)
  4. leadingColor and tailingColor allows to change icons' color.
  5. actionClicked- this method will fired when one of action icon clicked by user. And it will show which of action icon clicked.
actionClicked: (actionName) {

actionName can be either leading_clicked or tailing_clicked.

By Default you can use:

          context: context,
          actionClicked: (actionName) {
          logoID: "assets/logo.png",//path of assests image (can be null too)
          leadingIcon: Icons.arrow_back_ios, //can be null too
          tailingIcon: Icons.settings, //can be null too

Full version

          sizeFactor: 18,
          key: Key("appBar"),
          iconFactor: 1.8,
          context: context,
          leadingColor: Colors.white,
          tailingColor: Colors.white,
          actionClicked: (actionName) {
          logoID: "assets/logo.png",
          leadingIcon: Icons.arrow_back_ios,
          tailingIcon: Icons.settings,

Use this package as a library

Depend on it

Run this command:

With Flutter:

 $ flutter pub add own_appbar

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):

  own_appbar: ^0.0.2

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:own_appbar/own_appbar.dart'; 

Download Details:

Author: documentation

Source Code:

#mobile #widget #android 

A Responsive AppBar Widget