Coder Social home page Coder Social logo

bitbanana's Introduction

BitBanana

Screenshot of BitBanana app

GitHub license Translated GitHub Release

⚡️ Superpowers for you and your bitcoin lightning node! Use and manage your node wherever you are. ⚡️

BitBanana is a native android app for node operators focused on user experience and ease of use. While it is not a wallet on its own, BitBanana works like a remote control allowing you to use your node as a wallet wherever you go.
The app is designed with an educational approach, providing the user with guidance on every aspect of node operation.

BitBanana forked from Zap Android. You can find more information about this on the Rebranding page.

Getting started

The easiest way to get started is using Start9 or Umbrel to run LND or Core Lightning on a raspberry pi and then connect BitBanana to that node. There are of course a lot more possible ways to run a node, so please refer to the setup section in the Wiki if you need help to get started.

Get it on F-Droid Get it on Google Play

Or download the latest APK from the Releases Section.

Features

General

  • Connect to remote lightning nodes (LND, Core Lightning & LndHub)
  • Available in many languages
  • Explanations and help across the app
  • Convenient VPN automation
  • And of course, BitBanana is Bitcoin only!

Node Management

  • Use your node as a lightning wallet wherever you are
  • Manage multiple nodes
  • Manage peers
  • Manage channels
  • Manage routing fees
  • Routing summary

Wallet

  • 100% free. The only fees you pay are to the bitcoin network. BitBanana won't charge you a single sat.
  • Send & receive on-chain and off-chain
  • Contacts (with Avatars)
  • Send funds to lightning addresses (email like addresses)
  • Send funds without an invoice (keysend)
  • NFC support
  • Transaction filters
  • BTC, mBTC, bit & Satoshi units
  • Fiat currency prices
  • Support for SegWit & Taproot
  • Sign/Verify
  • LNURL support (pay, withdraw, auth, channel)

Security & Privacy

  • 100% Self-custodial
  • 100% open source code with reproducible releases
  • ZERO data collection
  • Tor support
  • PIN protected access
  • Scrambled PIN by default
  • Stealth mode (hide app)
  • Hide balances
  • User guardian system (BitBanana warns you when you are about to perform a potentially dangerous or privacy leaking action)
  • Supports self-hosted block explorers
  • Supports self-hosted exchange rate providers
  • Supports self-hosted fee estimation providers
  • Protection against screen recording

Security

If you discover or learn about a potential error, weakness, or threat that can compromise the security of BitBanana, we ask you to keep it confidential and submit your concern directly to the BitBanana developer.

Self-custodial

BitBanana is fully self-custodial. When using the app there is absolutely no interaction with any BitBanana team or service. We do not even know you are using our app.

Get Help

If you are having problems with BitBanana, please report the issue in GitHub or on discord with screenshots and/or how to reproduce the bug/error.

Contribute

Hey! Do you like BitBanana? Awesome! We could actually really use your help!

Open source isn't just writing code. You can help BitBanana with any of the following:

  • Donate
  • Drop a star on github
  • Share a positive review and rate the app in the app store
  • Tell your friends about it
  • Translate the app using Weblate
  • Find and report bugs, Open an issue
  • Suggest new features
  • Provide support to fellow users on BitBanana's discord
  • Contribute to our documentation
  • Review pull requests
  • Fix bugs, implement new features

If you would like to contribute to the project code, please see the Contributing Guide

If you want to setup a testing environment, please see the Regtest Guide

Build

If you want to build the app yourself take a look at the Installation Guide

Verify/Reproduce

BitBanana is reproducible.
You want to verify that the app distributed in the app store is actually built from the source available here on github?
See these reproduce instructions.

Maintainers

License

This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. See LICENSE for more information.

MIT © Jack Mallers, Michael Wuensch

bitbanana's People

Contributors

05nelsonm avatar atalanttore avatar bezysoftware avatar bilthon avatar bitcoinuser avatar comradekingu avatar epicmario7133 avatar freemanovec avatar hazrulnizam avatar jimmymow avatar joaooliva avatar m-btc avatar michaelwuensch avatar mrhash avatar postpollux avatar poussinou avatar raphbtc avatar rockstardev avatar salif avatar santossi avatar satoshiplanet avatar tlindi avatar vindard avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

bitbanana's Issues

Support for eclair

Description

Support for eclair nodes based on the the eclair Lightning implementation.

Manage Peers

Description

As a Node Manager BitBanana should allow to mange peers.
This includes connecting, disconnecting and showing relevant informations about peers.

Possible Implementation

As peer management is done automatically in a reliable way, peer management should be deactivated by default, to not clutter the main menu.
This means we should add a settings section to enable or disable certain aspects of node management.

Add advanced channel details to pending and closed channels

Description

Exactly like on open channels now, pending and closed channels should have the three dots available that leads the user to the advanced channel details.
Depending on the channel type different things should be shown there.

Context

This is a feature experts will love as they can see even more details.
At the same time it is a very good place for newcomers to learn new things as this view provides a lot of detailed information for channel properties.

Manage watchtowers

Description

The app should allow to manage watchtowers for its connected nodes. Watchtower client will be enabled by default from lnd v0.17 onwards.

Replace QR-Code scanner library

Description

ZXing is no longer well supported. There might be better alternatives.
One main reason for looking into another library ist that the current implementation has problems with very large & dense QR codes.

Possible Implementation

This library looks interesting, as it uses ML Kit like google, but can work without google play services.
https://github.com/G00fY2/quickie

LNURL not working

Description

Some of the lnurl logins like lnmarkets are not working. I would appreciated if it works : )

Context

Possible Implementation

Allow adding lightning addresses as contacts

Description

Lightning addresses are email like address formats that are easy to use. BitBanana already supports lightning addresses for payments and has a contact list option, but there is no way to add a lightning address as a contact.

Context

When starting to add a contact, the app instantly starts into a QR scanning mode, without the possibility to enter text.

Possible Implementation

There could be an in-between screen that lets the user either enter a text (lightning address, pubkey etc) or start the QR scanning mode.

Add channel sorting

Description

It would be nice if the user is able to sort the channels by different metrics.

Open channels metrics could be:

  • Alphabetical
  • Capacity
  • Age/Opening date
  • Activity

Closed channels metrics could be:

  • Alphabetical
  • Capacity
  • Liftime (how long has the channel been open)
  • Close date
  • Opening date

Context

So far they are always sorted alphabetically.

Show network/chain next to node address

Currently, in the "manage nodes" list and in the title of the main screen there are only addresses listed, not the type of network/chain that is run by the node. So all you can do is guess which is what.

Please consider showing mainnet/testnet/signet next to the address. Alternatively or in addition, a color coding could be used with orange=mainnet, green or gray=testnet and purple=signet.

Android app will crash, when LNURLw doesn't have enough resources

Description

When there is LNURLw what allow withdrawal more, then it's actually placed on wallet, instead of error and failed payment, application will completely crash.

Expected Behavior

Error about failed payment.

Actual Behavior

App crashes completely.

Possible Fix

Handle error of failed payment.

Steps to Reproduce

  1. On LNBits create LNURw and fund wallet some sats, but less then maximal allowed amount
  2. Try withdraw some funds, lower than limit, but higher then actual funds available using Android app
  3. App will crash.

Context

Annoying :)

Your Environment

Mi 10T Pro, Android 12 (MIUI 13.0.8)

  • BitBanana version: (0.6.6-beta)
  • Android version: (12 SKQ1.2211006)
  • Device: (Mi 10T Pro)
  • LND Version: (v0.16.4-beta)
  • LNBits Version: (0.10.10)

Display channel close fee in history

Description

So far only the channel open fee is shown in the transaction history.
When a channel is closed that you have opened, you will pay a fee for the closing transaction.
This should be displayed as well.

Bolt 12 support

Bolt 12 will allow receiving bitcoin without the need of creating invoices.
This will be quite some work to get a good user experience.

A new contact type needs to be added as well.

Challenges in Reproducing the Build

I am currently trying to reproduce the current version of bitbanana which is on playstore.

Description

I was able to build BitBanana locally. The APK I generated from this build did not show any differences from the release version of the APK on GitHub. Now comes the interesting part. I need to find the differences with the APK version released on my mobile device.

There has been a change in how Android builds these APKs, as they now provide device-specific builds. To get the APK specific to my device, I had to use Bundletool to extract the APK from the AAB I built. I used abd to get the APKs for my specific device, following the usual process.

When I used diff after extracting the APKs, I found that the APKs from both sources had different names, so I extracted all the files from the APKs. Although the types of APKs were the same, there were still some differences. Some of these differences, like AndroidManifest.xml, META-INF/BNDLTOOL.RSA, META-INF/BNDLTOOL.SF, META-INF/MANIFEST.MF, and stamp-cert-sha256, can be ignored, but the rest cannot.

Expected Behavior

Actual Behavior

diff --recursive --brief extracted_apks/unzipped/ built_apks/unzipped/
Files extracted_apks/unzipped/armeabi/AndroidManifest.xml and built_apks/unzipped/armeabi/AndroidManifest.xml differ
Files extracted_apks/unzipped/armeabi/META-INF/BNDLTOOL.RSA and built_apks/unzipped/armeabi/META-INF/BNDLTOOL.RSA differ
Files extracted_apks/unzipped/armeabi/META-INF/BNDLTOOL.SF and built_apks/unzipped/armeabi/META-INF/BNDLTOOL.SF differ
Files extracted_apks/unzipped/armeabi/META-INF/MANIFEST.MF and built_apks/unzipped/armeabi/META-INF/MANIFEST.MF differ
Only in extracted_apks/unzipped/armeabi: stamp-cert-sha256
Files extracted_apks/unzipped/base/AndroidManifest.xml and built_apks/unzipped/base/AndroidManifest.xml differ
Files extracted_apks/unzipped/base/classes2.dex and built_apks/unzipped/base/classes2.dex differ
Files extracted_apks/unzipped/base/classes3.dex and built_apks/unzipped/base/classes3.dex differ
Files extracted_apks/unzipped/base/classes4.dex and built_apks/unzipped/base/classes4.dex differ
Only in extracted_apks/unzipped/base/META-INF: BNDLTOOL.RSA
Only in extracted_apks/unzipped/base/META-INF: BNDLTOOL.SF
Only in extracted_apks/unzipped/base/META-INF: MANIFEST.MF
Files extracted_apks/unzipped/base/res/xml/splits0.xml and built_apks/unzipped/base/res/xml/splits0.xml differ
Files extracted_apks/unzipped/base/resources.arsc and built_apks/unzipped/base/resources.arsc differ
Only in extracted_apks/unzipped/base: stamp-cert-sha256
Files extracted_apks/unzipped/xhdpi/AndroidManifest.xml and built_apks/unzipped/xhdpi/AndroidManifest.xml differ
Files extracted_apks/unzipped/xhdpi/META-INF/BNDLTOOL.RSA and built_apks/unzipped/xhdpi/META-INF/BNDLTOOL.RSA differ
Files extracted_apks/unzipped/xhdpi/META-INF/BNDLTOOL.SF and built_apks/unzipped/xhdpi/META-INF/BNDLTOOL.SF differ
Files extracted_apks/unzipped/xhdpi/META-INF/MANIFEST.MF and built_apks/unzipped/xhdpi/META-INF/MANIFEST.MF differ
Files extracted_apks/unzipped/xhdpi/resources.arsc and built_apks/unzipped/xhdpi/resources.arsc differ
Only in extracted_apks/unzipped/xhdpi: stamp-cert-sha256

Possible Fix

Steps to Reproduce

  1. Following the reproduction instructions provided in the documentation: https://github.com/michaelWuensch/BitBanana/blob/master/docs/REPRODUCE.md

Context

Unable to determine whether the wallet is reproducible.

Your Environment

  • BitBanana version: v0.8.1
  • Android version: 8
  • Device: Redmi 9
  • LND Version: (e.g. 0.7.0-beta)

Cannot Connect to Node Over Tor

I have an LND node up and running and I am trying to use BitBanana to connect to it from my Android phone.

When I scan the generated QR code that I generated using the shell script code from

https://github.com/LN-Zap/lndconnect/blob/master/lnd_connect_uri.md

I get the error listed in

https://github.com/michaelWuensch/BitBanana/issues/67

`Connection failed.

UNAVAILABLE: Response
returned from proxy was not
successful (expected 2xx, got
502 Bad Gateway (unexpected
close)). Response body:`

I tried different ways of inputting this information.

I originally had the entire URI output of lncli getinfo in the command, but BitBanana seemed to accept that and knew what I had done and corrected it. I tried it again afterwards with just the onion address information but it still errors out the same way.

I also tried taking the certificate section out entirely, and again BitBanana seemed to handle that without issue. But I would still get the same error when trying to connect.

Another note, while trying to troubleshoot this, I tried editing the connection info manually in the BitBanana application. This ended up being confusing because I couldn't tell if the changes were sticking or not. I assume the application reverts the settings if they do not work. So to verify new information I kept deleting the node and reentering the connection info to make sure the changes were being saved. Not really an issue, just a comment on UX. I couldn't tell if my changes were being tested and not working, or if the changes were taking place at all.

This isn't a deal breaker for me, but it really would be a nice to have, getting this working over tor. I'm not sure what the issue is, but considering someone else was having this issue recently, I thought maybe a new bug report would be worth it. If I could get some help with this, or if I can be of help, please let me know.

Your Environment

  • BitBanana version: 0.7.3, build: 54
  • Android version: Android 14 so I guess API 34
  • Device: Samsung Galaxy S23+
  • LND Version: 0.17.3-beta

[Feature request] Add support for Neutrino

Description

Add support to run a LN node on the device only with BitBanana, without need to connect to a desktop full node.
That means support for a full Bitcoin node with support for Neutrino (BIP157)

Context

Yes, is nice to connect to your own node from home. But maybe some users do not want/can't run a home full node.
Neutrino could offer a good simple solution to run a LN node on a mobile device and keep self custody of the funds.

Possible Implementation

Blixt and Breez are using Neutrino. Like was Zap desktop too. Also Nayuta is using Neutrino.
So these examples could be a good source of looking how was implemented.

App crashes when trying to send payment to non-existent lightning address typed via keyboard

Description

When trying to send a payment to non-existent lightning address AND you enter this address manually via keyboard, the app crashes (restarts to be exact). When you scan the same address with a QR code the app correctly shows an error prompt (e.g. 404).

Expected Behavior

The app should behave the same way when the lightning address is entered via keyboard as it does when scanning the address from a QR code - it should show a red prompt with error description. It shouldn't crash.

Actual Behavior

The app crashes.

Possible Fix

Steps to Reproduce

Send -> "[email protected]" -> Continue -> App crashes

Context

I was trying to send a payment to someone (donation) but they had disabled their lightning address. The app would crash, restart and prompt for my finger print, which was confusing because at first I though it was asking me to confirm the payment, but I hadn't specified the amount yet.

Your Environment

  • BitBanana version: 0.6.2.44
  • Android version: 13
  • Device: e.g. Google Pixel 5
  • LND Version: 0.16.2

Support LNURL Auth

Description

Support for LNURL Auth. This allows to login to services using the node.

The key derivation needs to be taken seriously to allow interoperability with other apps.

Currency Symbols

Description

If the banking system keeps collapsing like it does right now we might be able to close this issue soon without doing anything!

If not we should add currency symbols!
Right now it only shows the ISO code (three letter abbreviation like USD, EUR, ... )

We might have to also look into the placement of the currency symbol. Sometimes a currency symbol is used in front of the amount (USD, ...) and in other cases it is behind (EUR, sat, ...)

Include App settings in migration backup

Description

Include app settings in the backup that can be created using BitBanana.

Context

It would be convenient for users if the app settings are transferred as well during phone migration.

[Feature request] Add LUD-18 nameDesc support

Description

Please add support for adding a pseudonym making a payment to a LNURL, aka LUD-18

Context

This is a very handy feature, when user want to send a message with a sender next to a LNURL payment.
Is not the real identity, it could be any alias or nym. But the receiver could probably know who is sending sats from a donation for example.
And many other applications.

Possible Implementation

Blixt wallet and OBW already implement it. LNbits and Alby also is using it. So looking into their open source code could be a start.

Test tools can change the amount

After setting the amount using the lighting request, click Next. I can modify the specified amount on this Fragment using automated testing frameworks such as Robotium.

Expected Behavior

Actual Behavior

Possible Fix

Steps to Reproduce

After setting the amount using the lighting request, click Next. I can modify the specified amount on this Fragment using automated testing frameworks such as Robotium.

Manage fees

Description

As a node manager BitBanana should allow its users to set the fees for their channels.

Cannot connect to LND via Tor

Hi there,
I´ve been trying very hard to connect to my node over tor.
I was using this tutorial: https://github.com/alexbosworth/run-lnd and have LND running and synced.
When pasting the generated LNDCONNECT string I am getting "The provided host or port is invalid", no matter if I have Orbot running or not.

in lnd.conf, I have:

[tor]
tor.active=1
tor.v3=1
tor.password=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
tlsextradomain=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion

plus all the other default settings from the tutorial.

my /etc/tor/torrc

ControlPort 9051
HashedControlPassword 16:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CookieAuthentication 1
CookieAuthFileGroupReadable 1
Log notice stdout
SOCKSPort 9050

lncli getinfo:

{
"version": "0.17.3-beta commit=v0.17.3-beta",
"commit_hash": "13aa7f99248c7ee63989d3b62e0cbfe86d7b0964",
"identity_pubkey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"alias": "YOUR_ALIAS",
"color": "#000000",
"num_pending_channels": 0,
"num_active_channels": 0,
"num_inactive_channels": 0,
"num_peers": 5,
"block_height": 825071,
"block_hash": "000000000000000000031cb6b4df6a1238403d07055b05cdac52c126b71dd4f3",
"best_header_timestamp": "1704846931",
"synced_to_chain": true,
"synced_to_graph": true,
"testnet": false,
"chains": [
{
"chain": "bitcoin",
"network": "mainnet"
}
],
"uris": [
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion:9735"
],

port 9735 is OPEN.

LNDCONNECT-STRING:
lndconnect://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion:9735?cert=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Also no success with ZAP or ZEUS.

Please, what am I missing here, I feel very close. Thanks

🇨🇿 Czech translation is complete

The translation instructions say to celebrate, so here it is 🎉

obrazek

Btw, after rebranding there was a hilarious bug where the original word for "pay", "zaplatit" (notice the "zap" beginning of the word) was translated to "BitBananalatit", which is obviously nonsense :) But at least it made me decide to contribute.

Anyway, keep up the good work!

Add Lightning Explorers

Description

Lightning explorers should be added. When clicking a Node pub key the request will be forwarded to the browsers. Similar to how Block Explorer work today in the app when clicking on a transaction ID.
Different Lightning explorers should be available in the advances settings to chose from.

iOS Support

Description

Would be cool to have the wallet on iOS.

Brief show of zero balance

Description

Each startup, BitBanana briefly (and sometimes longer) shows a balance of 0 before the actual balance appears.

Expected Behavior

I think it should not do that. It's extremely irritating, especially in those cases where that invalid state shows for a longer time.

Actual Behavior

See description.

Possible Fix

Show some progress indicator instead: e.g. "Loading balance…"

If the rest of the main screen is usable even without proper balance, the progress could be shown on the main screen with the other buttons already active.

Steps to Reproduce

  1. Start BitBanana.
  2. Watch startup closely.

Context

Your Environment

  • BitBanana version: 0.7.4
  • Android version: 14
  • Device: Pixel 7a
  • LND Version: 0.17.4-beta

Improve lightning fee limit options

Description

The options provided in the settings could be better.
5% and 10% is actually inacceptable for lightning payments and should be removed.
Maybe one or two options below 1% can be added.
Furthermore it might make sense to use 1% as default instead of 3%.

Scan QR code from image file

Someone recently sent me a screenshot an invoice and there was no way for BitBanana to process it without a second device. It would be nice to have a "from file" button on the "Scan" screen, possible next to the flashlight icon.

Allow paying before fee is estimated

Often while paying the fee estimation takes a very long time even though it ends up being 1 or even zero hops. It would be nice to set a maximum allowed fee (percentage?) and enable to pay button even while fee estimation is running. This would greatly improve experience while paying for coffee with a line of ppl behind me.

Ensure reproducibility

Description

In v0.6.1 assets/dexopt/baseline.profm is not deterministic. This should be fixed.
Also there should be a guide on how to reproduce builds.

Context

If an application available on the app store cannot be replicated by using the given source code, it poses a significant security threat. In such cases, the developer could potentially add hidden vulnerabilities that may allow them to gain unauthorized access to sensitive user data and even steal their funds.

Could not fetch configuration from btcpayserver

Description

When trying to connect to my BTCPaySever node, I get an error message that isn't too helpful:

Could not fetch configuration from btcpayserver

Expected Behavior

The node should connect or give an error message with more details

Actual Behavior

I receive the error message

Could not fetch configuration from btcpayserver

Steps to Reproduce

  1. Open BTCPaySever's server settings > LND GRPC which is compatible with Zap
  2. Scan the only QR code on the screen using BitBannana

Context

Unable to use BitBanana at all

Your Environment

  • BitBanana version: (0.6.5, build 47)
  • Android version: (13)
  • Device: (Pixel Pro 7 Running Graphene OS)
  • BTCPay Server v1.10.2+6d0f9120b
  • Node URL

POS - Point of Sale integration

Description

As a merchant it would be cool if BitBanana could be used as a POS.
This will require extensive research and talks with real merchants to do it right.

Possible Implementation

It has to be determined if integration with other services like e.g. Square is needed or if it should all be contained in the app itself.

Automate VPN connection via the app.

How about if the app would not only establish a Tor connection when opened, but also a VPN connection to the node's location, so that we can then access the node with a home IP. Tor is slow, Wireguard or FritzVPN connection is faster, so we can access the node faster.

The first startup after installation will crash

Description

The first startup after installation will crash

Expected Behavior

successfully startup

Actual Behavior

crash

Possible Fix

Steps to Reproduce

1.download from f-droid
2.install and startup crash

Context

Your Environment

  • BitBanana version: 0.7.0
  • Android version: android 10
  • Device: huawei nova 5 pro

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.