Ara
- Medet Ahmetson
- 15 Jan, 2024
-
Computers are the best technology for expressing and exploring our minds. The result of expressing our thoughts through computers produces structured, precise information. This information has various names:Code Model (in machine learning) Program Software Smartcontract (in blockchain) Script Instructions Algorithm etc.All this information has unique characteristics: the computers or software could execute the data, including the conditions. That means they process the information partially depending on the condition. Computers could partially replicate our brain activity. It's not meant to replicate fully our brain to replace us in the future. It's not meant to delegate some of our brain activity to automate human tasks. The main goal of computers is to increase our brain activity, including our imagination. Analogously, consider our brain as the laptop hardware. Then the computers are the USB, which adds extra storage. The USBs are pluggable mobile but have less hardware capacity. But with the USB, we can share the data between multiple laptops. The ability of computers to share data over the internet is crucial. In analogy, the internet is the mobility and pluggable parameter of computers. Surprisingly, the original pioneers of computers haven't considered the internet part of computers. But why is the internet a crucial part of computers? Because software is a product of our thinking. For us, the most necessary aspect is to share our ideas. One person does not build ideas. It always relies on the ideas of other people. You need other ideas for the information; you need others not to reinvent the wheels but to use what others built as giants by simply improving their ideas. You need others who would help you to improve your idea. We may need to collaborate on complex ideas with others. Lastly, our inner child tells us to share what we know with others. Thus, computers mediate between people in real-time or from different eras to work on the idea. Software is meant to be created by people for other people. Even if it's not the code itself, the user of the software or the result of the software must be for other people. Thus, we need to understand the internet as the inter-connected software, where everyone can change and modify the software. Understanding the internet opens up the true potential of computers for us. Understanding the internet opens up new software that has not yet been seen worldwide. One potential kind of software is folk software. It's software created by one person. Then, it was improved over time by other people. It might shift from its original form. The second important aspect of folk software is that it has a general version and different variants per user or group of users. Consider, for example, video-sharing software, YouTube. If YouTube was folk software, the current version would be generic. But every user might have YouTube with a different feature set. For example, some people would prefer to see a 10-star rating instead of the like buttons. Others would want to see the auto-pausing after a few seconds. Sadly, YouTube is not a folk software. It's an online service with full ownership belonging to Google. When you were using the software, how many times have you wished it had the feature but didn't? Maybe you were sending a request to the developers to add that feature? Sadly, a current industry driven by profit would add the feature if it aligns with the profit they get, not by what is needed for a specific user. Even when you use software offline, and want to adjust it, the current software requires deep technical skills that most of us lack. Ara helps to adjust the software that is interconnected to each other. Which means we can compose multiple software into something new. Ara also helps to discover and publish your ideas with other people. In other words, Ara makes all software interconnected, composable, and adjustable by any user with minimum technical skill. Ara tries to work with the existing software rather than build the ecosystem from scratch. Ara consists of three parts. The Meta protocol that makes apps self-explaining. The app could be written in any language or in any internet topology. However, the software must have an endpoint that describes what it's doing so that anyone can use it without knowing its API or documentation upfront. The second component of the Ara is the blockchain-based indexer of all apps worldwide. It also provides a payment system that helps to sort the programs by popularity and rewards the users whose ideas are used by others for profit. The last part of the Ara is the client. The client helps modify, publish, collaborate, or discover software on the internet. The client comes with an AI assistant that understands the meta protocol.When a remixed version of the music becomes more popular than the original song, it's fair to share the reward both for DJ and composer. In the same way if a user creates a variant of the software, and commercializes it, then we want to reward the original authors too. It's a matter of ethics not legal rights. In today's IT economy is like that. The unknown people dedicate their time to build an open-source software. Then, commercial companies build the software and become billionaire. With the ara we want to reward the open-source developers too. We want to make the economical model in a fair way. By fairness I mean, when an entrepreneur thinks of the commercial product, he shouldn't bother himself with the reward sharing, it's a psychologically implies his product is not his. At the same time, we want open-source software makers to earn a passive income. To solve it, we use the cryptocurrency in our indexer. And advised for all app makers to use the Ara cryptocurrency or backed by it cryptocurrency as the app's payment. This way, if user pays for the service, then ara makes sure that all other services depending on the service also get the share from the users. Using the crypto currency is advised but not required. Then what are the benefits for the commercial app makers? The indexer is what connects the client and the software with the meta protocol. It's more like a search engine, app store and DNS together. The most important part of the indexer is the recommendation system. There will be other softwares like the one that commercial app maker is creating, there will be another apps that is built on top of the commercial app. Thus, to make the software discoverable for more users, that software must be higher in the rank. And that ranking is defined using the payments. The higher the app traffic, the more discoverable it is. To prevent commercial apps from purchasing the traffic, we add additional method in our blockchain. Namely, we also look at the user's activity. The more they use the ara, the diverse is their app pool, the more weight it has in the software ranking. Of course it's the matter of the change as people constantly finds the weakens. The duty of updating the fairness in the recommendation system relies on the ara organization. Any indexer according to the rule must be open-source. And people may create a fork with better recommendation system. Thus, if the ara foundation makes something wrong, there are always people who can instantly replicate and create the better version. In short, there is no any final authoritive, everyone is replacable.
Read MoreAra leading ideas
- Medet Ahmetson
- 15 Jan, 2024
-
My father wanted me to be an architect. He would bring 3ds Max, Photoshop and books that teaches those softwares. In Turkmenistan, architects earn a lot, and well respected in the society. And since childhood I was into the art, my father wanted me to be architect and be respected in the society. But I didn't want to be an architect. My curiousity led me to learn how computers work. It was in late 2000s. Turkmenistan just opened the Internet for mass. But it was a mobile internet. Slow and very expensive. I didn't have access to the video courses. To read the web articles as it was expensive for the internet traffic. I also didn't know English very well. In my situation, the books with the smallest size (.djvu, .pdf) that covers topic in depth were ideal. So, I would learn programming by downloading books that were 3-6 megabytes in size in Russian language. And it was the books that are outdated. Books that would talk about Microsoft/Open-source wars, about operating systems such as OS 360/1, programming languages such as Cobol, Fortran and how C, C++ were great than them. Besides touching the history, I also grew up with their dream. When I was an intern in 2017, I saw how the company organized an event related to the Cryptocurrencies and Web3. But that made me confused. I knew what was web3 as the semantic web not something as data ownership. I knew AI not as the deep learning, but as the expert systems. I knew Steve Jobs not because of Iphone, but from 80s in their war with Microsoft. I was learning programming to earn a passive income. After every project, I learnt something new. About design, UX, market research, team work and so on. The lesson that I took is that, writing the app is just 25% of the work. Another 25% of the work is dedicated for the maintaining the app, another 25% for the markeeting, another 25% for the business operations, UI, and so on. Eventually Entrepreneurship start to drain me. I start to look for the purpose of the life. What is the meaning of the life? One of the books said to me, combine what you are good at and what do you want to do since you were a child. I wanted to write stories. I knew art and programming. Combining them together led me to start working in the game industry. The Ara is a result of my experience: learning design tools before programming, game engines, crypto, open-source and dream of early computer pioneers with what I grew up with. When I moved to China I got an unlimited internet traffic with WiFi. I tried video tutorials. But eventually inclined to the fundamental works. They are dry but covers the topics in a systematic way. My questions about purpose, who am I also led to the interest in the history, religion. But even then, I could get with the monographs rather than reading articles of the science popularizers. And until when I was 25, I was going with what books were telling me, as they are smarter than me. Only in 2020s I start to get my own opinion and build my own philosophy. Still, my teachers are respected by me.
Read MoreSteve Jobs is not a role-model
- Medet Ahmetson
- 15 Jan, 2024
-
I use Steve Jobs' own words: "Innovations lead to the innovations". His own company, his own products don't lead to the technical innovations. When you read the history, when there are no new ideas, but a sophistication of what was built, this indicates a decline of the culture. A slow stagnation. If we value products like iPhone, MacBook for it's candy-crash like UI as the greatest thing in the technology, then it's clearly marks the stagnation of the culture. I use iPhone (my family bought me as a gift), it never lead me to build something with it. So for me neither Apple, neither Steve Jobs are respected nor role model.I think they have important in the popularization of the technology. Apple is like Chinese internet, it takes the app and packs it in a nice user interface. These kind of products should be respected by UX designers, not by technology companies. They should take Apple as a role model when it comes to the intuitive user experience when using the technology. To give you analogy, you can't say google is the better than Yahoo in terms of technology because Google has a minimalistic main page. But that is going on with the Apple.
Read MoreProgramming Language: Rust
- Medet Ahmetson
- 05 Jan, 2024
-
Rust is a programming language designed by Mozilla Foundation. This is the notes on Rust Book. Cheatsheet CLI applications: rustc rustup cargo cargo new <project_name> cargo build // --release for production cargo run cargo check //ensures code compiles but doesn't build the executable. Hello World fn main() { println!("Hello, World!");} Write the code above in hello.rs. Open the terminal, and type: rustc ./hello.rs. In rust, there must always be a primary function. It's a starting point of the application. The functions must always have curly braces. The println! is a macro. Macros always end with an exclamation mark. Hello, Cargo Cargo is the package and system manager for Rust. It handles downloading libraries, building the binary, and many other tasks. The libraries that the program uses are called dependencies. Create a cargo project using cargo new <project_name>. The cargo automatically creates version control files using Git as a default VCS. In the project structure using cargo, all files are stored in the src directory. The parameters of the program are defined in the Cargo.toml configuration file. Build the project using cargo build command. Run the program using cargo run.Syntax [associative function] The string is the standard data type in Rust. :: in String::new() calls the associative function. The associative function is the function that is implemented on the type. [enum] Enumerations are called in short as enum, which is the type that can have multiple possible states. We call each possible state a variant.[crate] The crate is a collection of rust files. let a: [i32; 5] = [1, 2, 3, 4, 5]; let a: [i32; 5] = [1, 2, 3, 4, 5];let a: (i32, string, char) = (23, "hello", 'z'); Slices are contiguous sequences of elements in a collection rather than a whole array. It's a kind of a reference.
Read MoreNotes on "Practical deep learning": foundation
- Medet Ahmetson
- 28 Dec, 2023
-
While trying to launch the model, I discovered the book was outdated. Now, we took video lessons more than the book chapters. These are the notes on Lesson 3: How Neural Networks work and how to optimize it. How to learn?Watch the lessons (Read the chapters) Run notebooks and experiment. Reproduce results Repeat with different datasetRun notebooks in the /clean folder from the book repo. About exported model The exported model '.pkl' has two things.Preprocessing steps to turn data into a model: DataLoaderpart. Trained model available in .modelparameter. It's a tree of multiple models for each neural layer. The submodules are available by model.get_submodule()method.@interact(a=1, b=2, c=3) is the particular keyword for jupyter to make interactive parameters. How does Neural Network work? A neural network tries to fit a function to data. The neural network adjusts the function parameters until the function's output is not close to the data. After adjusting the parameter, a loss function is used to see how close the function output is to the data. The mean_mean_error: ((output - data)^2).mean()is the most popular loss function. To automate adjustment by a loss function, we could calculate the derivative. Derivative checks how much parameter value increase increases the output. And how far it is from the data. The distance from the data to the function output is called a slope or gradient. Python tip: func(*params). The * expands the parameters into function arguments as a, b, and c. The PyTorch library has built-in derivative calculating functions. This function is called a tensor.backward(). It's the method of the tensors. How to enable derivative:Create a tensor: abc = torch.tensor([1.5, 1.5, 1.5]) . For example, it created a rank one tensor. Enable derivative calculation in the tensor: abs.requires_grad_(). Calculate loss. Then, calculate a derivative using .backward(). This function adds the .grad property to the tensor with the slope derivative.Once the gradient value is available, we can iterate multiple times by adjusting parameters by the slope number. This loop is called optimization, which means decreasing the loss value. Example Assume we have random dots on the graph for the c*x^2 + b*x + a equation. Let the function find the values for a, b, and c. We have multiple dots for each part, not one. Because if there was one dot, we could draw a line by them. Initially, we picked some random numbers as the starting point. Then, we calculate the loss using mean_square_error by passing random dots and our initial values. Assume that the numbers are converted into tensors with enabled derivatives. Finally, we adjust the values until the gradient doesn't decrease sufficiently. ReLu Relu is a short name for Rectified Linear: def rectified_linear(m, b, x): y = m * x + b return torch.clip(y, 0.) This function is the single function whose negative value is turned into 0. Combining multiple relationships creates a flexible function that can solve almost any problem. This is pretty much the foundation on which all neural networks are built.
Read More