Tasks
What is a task?
Tasks are classes that can be run through the command line or set up as a cron job. They are generally used for background processes, timed tasks and maintenance tasks. Tasks can calls models and other classes just like controllers.
Creating a task
In Fuel Controllers are put in the fuel/app/tasks directory. Below is an example of the task "example":
namespace Fuel\Tasks;
class Example {
public function run($message = 'Hello!')
{
echo $message;
}
}
That will be called via the refine utility within oil:
$ php oil refine example "Good morning".
When just the name of the task is used in the command, the method "run()" is referenced.
Splitting tasks into more methods
You can add more methods to your task class to break a group of tasks down into more specific tasks which can be called separately.
public function current_date()
{
echo date('Y-m-d');
}
We can then call this method using:
$ php oil refine example:current_date


What do you need to decide?
Projects
Entertainment
Right now you should:
...
These decisions expire on
...
.


The Feynman Lectures on Physics Audio Collection
About The Feynman Lectures on Physics Audio Collection
These are the tape recordings of Richard Feynman's 1961-64 Caltech Introductory Physics lectures, which form the basis of the book The Feynman Lectures on Physics. The original recordings were made on 1/4" reel-to-reel tapes, now preserved in Caltech's Archive. In 2010 the entire collection was digitized by media preservationist George Blood, at a sampling rate of 96 kHz with 24-bit samples, PCM-encoded in WAV files about 2 GB each in size. For this online publication we are serving more compact versions, downsampled to 48 kHz with 16-bit samples, reencoded as AAC-HE (mp4) and Opus (ogg) at a data rate of 48 kbps.
We present entire lecture tapes without any editing or enhancement, including the tape leader. Parts of some lectures edited out of the commercial versions of these recordings are preserved here intact. Recorded material outside the lectures, including discussions between Feynman and his students and/or colleagues, never previously published, can be found in this publication. Three entire lecture recordings never heard before outside Caltech, including two lectures on Quantum Mechanics Feynman gave in 1964, are also included in this publication.1
I am very excited to at long last be able to share these lecture recordings online, so that everyone can listen to them in their naked beauty. You will hear a lot you have not heard before, in particular, the many "after-lecture" discussions between Feynman and his students, many of which are entertaining and informative.2
Lecture #30 Interference, given on February 20, 1962, is of some historical interest: Feynman delays starting by 6 minutes because earlier that day John Glenn became the first American (and second man, after Yuri Gagarin) to orbit Earth, and he was due to splash down! So, there is a prolonged "before-lecture" discussion in the recording. In the background you can hear the excited hubbub of the students, concerned for Glenn's safe return. Feynman begins his lecture, "Mr. Glenn is in orbit and he'll probably come down during this lecture. We'll see if we get any news from it."
In closing, I wish to thank some people who helped make this publication possible, in particular our publisher Thomas Kelleher at Basic Books, Carver Mead and Adam Cochran at Caltech, and Natallia Piatrenka.
- The original tape recording of the first lecture Atoms in motion suffered some damage, either in the making, or later, so it sounds 'clipped' in many places, particularly when Feynman speaks loudly. (This is the only recording in the collection that is damaged.) ↩
- It can sometimes be a bit hard to hear the students in these discussions, because Feynman was wearing the microphone. ↩


## Mako can find this base file because it's in the settings.py -> MAKO_TEMPLATES_DIRS list
<%inherit file="base_template.htm" />
<%block name="content">
Username: ${ user.username}
First Name: ${ user.first_name}
Last Name: ${ user.last_name}
Email: ${ user.email}
Address: ${ user.address}
City: ${ user.city}
State: ${ user.state}
ZIP: ${ user.zip_code}
%block>


Set the cutoff frequency
Lowpass Cutoff: 5500
50 samples
Set b value (probability that sample will stay positive, otherwise the sample is negated)
1.0
Set the loss factor
0.99
Set the stretch factor
.5


Test Here
Tested file
Here is your result for processed MRI.
{% endblock %}
Upload the MRI file you want to test from Choose Files button only one at a time. Press Click_to_Test, then wait it might take a while to process the file.
Here is your result for processed MRI.


Backroom Shake Up At Chloorkop Confirmed
by Mazola MolefeMamelodi Sundowns, a club that has often been criticised for being inferior to its rivals in as far as administration, has made several appointments this month – one of them very high up the hierarchy – to address that very notion.
As reported by the Siya crew two weeks ago that Kenneth Makhanya was back at Chloorkop to take over his previous role, it has now been officially confirmed by the club that the veteran administrator has indeed been re-hired as the general manager.
Read: PSL Club Turns To MDC Team For Players
It means Yogesh Singh steps back from an acting capacity and assumes his position as head of legal and commercial as was previously the case.
Makhanya has already been hard at work and is believed to have already held meetings with the technical team and the backroom staff as Downs makes minimal, but critical, changes to the running of a club that is the most successful in the Premier Soccer League era.
More appointments were also confirmed to the Siya crew – that of a media and communications officer as well as a brand and marketing specialist.
Mashupje 'Shupi' Nkgadima arrives to plug the gap left void by Thulani Thuswa, whose departure at Chloorkop was very abrupt and felt by the supporters earlier in the year. Nkgadima has previously worked at Moroka Swallows and Bloemfontein Celtic, as well as briefly being involved as marketing coordinator for the Fifa 2010 World Cup organising committee.
He is joined by Kylie Isdale, who has a marketing background and has worked at La Liga and Fifa. The duo started work at Sundowns on Monday.


Home
Classes
3d Printer
Drones
Owl Pellets
Play-Doh
Minecraft Circuitry
Rube Goldberg
Green Screen & Stop Motion
Snap Circuits
Cow Eyes
About
Contact Us
Contact
Contact Us Today!
First Name
Last Name
E-Mail
Description
Success
Thanks for contacting us, we will get back to you shortly.
Send
Thanks
for filling out our test form! We will get back to you soon!


Your account was created successfully but there was no email address provided by your social login. Please specify an email address below. For security purposes, you will not have access to any account feature until we have a valid email address from you.


Welcome to GitAnalyzer
Git URL
#
Type of Issues
Status
1
Total no of open Issues
0
2
No of Issues in last 24 hours
0
3
No of Issues between 24 hours and 7 days
0
4
No of Issues opened for more than 7 days
0


--- layout: post status: publish published: true title: Episode 5.10 - "...until someone hits the floor." author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 8467 wordpress_url: http://ivyenvy.com/?p=8467 date: '2013-05-27 19:09:53 +0000' date_gmt: '2013-05-28 00:09:53 +0000' categories: - Podcast tags: - AJ Pierzynski - Carlos Zambrano - Dusty Baker - Lou Piniella - Michael Barrett - Ozzie Guillen - Matt Garza - David DeJesus - Crosstown Classic - Jim DeShaies - Johnny Cueto comments: - id: 6149 author: Kerry author_email<EMAIL_ADDRESS>author_url: '' date: '2013-05-28 17:46:18 +0000' date_gmt: '2013-05-28 22:46:18 +0000' content: "Thanks for picking my caption as the winner this week. I've just started listening to you guys this year and I am really enjoying it. I been a Cubs fan for quite a few years; living in Des Moines is almost natural if you didn't grow up with a team. \nThanks again, \nKerry (BTW, I'm a girl)" - id: 6150 author: IvyEnvy - Corey author_email<EMAIL_ADDRESS>author_url: http://ivyenvy.com/ date: '2013-05-28 17:53:27 +0000' date_gmt: '2013-05-28 22:53:27 +0000' content: Thanks for finding us, Kerry. Also, congrats on winning this week's caption contest. ---
We are just 2 episodes from #200 and we're inviting you to celebrate with us for the weekend. Details can be found at ivyenvy.com/200
The Cubs have had a rough week, winning just 2 of their last 9, including a lot of 1-run games. Matt Garza has returned and has two starts on the 2013 season now. We talk about his performances and a situation that he interjected himself into between Johnny Cueto and David DeJesus. Then, Dusty Baker worked his way into the discussion. We talk about slow batters and the reputation the Reds have developed.
The Crosstown Classic started just a few hours after we recorded and we talk about what the series means to us. Things aren't quite as exciting now that Zambrano, Michael Barrett, Lou Piniella, AJ Pierzynski and Ozzie Guillen aren't involved.
We go through some listener questions and talk about the Cubs options in the 2013 MLB draft, which high profile players in the minor league system could be trade bait and our opinions on Jim DeShaies.
Kurt gives us his Scary Stat of the Week and then we pick a winner for this week's photo caption contest.


| confint-MASS {MASS} | R Documentation |
Computes confidence intervals for one or more parameters in a fitted
model. Package MASS adds methods for glm
and nls
fits.
## S3 method for class 'glm' confint(object, parm, level = 0.95, trace = FALSE, ...) ## S3 method for class 'nls' confint(object, parm, level = 0.95, ...)
object |
a fitted model object. Methods currently exist for the classes
|
parm |
a specification of which parameters are to be given confidence intervals, either a vector of numbers or a vector of names. If missing, all parameters are considered. |
level |
the confidence level required. |
trace |
logical. Should profiling be traced? |
... |
additional argument(s) for methods. |
confint
is a generic function in package stats
.
These confint
methods call the appropriate profile method,
then find the confidence intervals by interpolation in the profile
traces. If the profile object is already available it should be used
as the main argument rather than the fitted model object itself.
A matrix (or vector) with columns giving lower and upper confidence limits for each parameter. These will be labelled as (1 - level)/2 and 1 - (1 - level)/2 in % (by default 2.5% and 97.5%).
Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth edition.


This is the fifth in a series of posts that will walk you through using the Openstack-based OVH public cloud. In this post you will get introduced to using Terraform to create Openstack servers using the Openstack API.
This post is assumes you have already signed up for an account with ovhcloud.com, added a payment method, created a cloud project, created an Openstack user, created a ssh keypair in the Horizon UI and downloaded the openrc.sh file for this user. If you have not done these steps you can follow the steps in the first and second blog post in this series that will walk you through completing those steps.
I will attempt in this post to present the options that are available to OVH public cloud customers along side the choices I made that were specific to my Openstack server.
Let's get started...
1. Install Terraform
The first thing you will need to do before you can move forward with this post is install Terraform. Go to https://www.terraform.io/downloads.html, download the binary for your specific operating system, unzip the binary and copy it to a directory that is in your path. Here are the steps that I performed on my Mac laptop:
2. Create a new directory and add your main.tf file
When using the terraform command, it will look for any files ending in .tf in the current directory and create them. As a result you should create a new directory for containing the terraform files we will use for creating the Openstack server.
Next you will need to create a file named main.tf in our new directory that will describe the server you are wanting to have created.
The provider.keypair_name should be set to match the name of the keypair you created in the Openstack Horizon UI in the second blog post. The provider.image and provider.flavor values listed above are the values I used with my testing.
You also might notice that all of the details in the provider block of main.tf are commented out which means they will be pulled from environment variables set in your openrc.sh file.
4. Source your openrc.sh file
Source the openrc.sh you previously downloaded for your Openstack user. Enter the password for your Openstack user when prompted. This step will export the environmental variables that the Vagrantfile needs in order to create the Openstack server.
5. Download all needed Terraform providers by running terraform init
Terraform will automatically download all Terraform providers referenced by any .tf files by running terraform init. Here is the output from when I ran this command.
6. View all the proposed Terraform changes by running terraform plan
By running terraform plan Terrraform will output all the details of the resources that will be created when commanded to apply the changes.
6. Apply the proposed Terraform changes by running terraform apply -auto-approve
After verifying that the proposed change outputed by terraform plan look good, apply those changes by running terraform apply -auto-approve.
7. Use terraform show to display the configuration details of the deployed Openstack server
After deploying your server with terraform apply you can query the configuration details by running terraform show. This command will return the details of the data objects queried as well as the server deployed.
If you look back at the output of your command you will see a line displaying the network.0.fixed_ip_v4 IP address that you can use to connect with ssh.
8. Connect to the deployed Openstack server using ssh.
You can now connect to the IP address that is displayed with terraform show using the private ssh key you created in a previous blog post.
9. Destroy your Terraform Openstack server.
 This can be done using the terraform destroy --force command.
That all for this post covering how to use Terraform to deploy a OVH public cloud server. In this post you have only scratched the surface of what you can do with Terraform, but hopefully if showed how simple it is to get started.
Please provide any feedback or suggestions to my twitter account located on the about page.
Please provide any feedback or suggestions to my twitter account located on the about page.
This is the fourth in a series of posts that will walk you through using the Openstack-based OVH public cloud. In this post you will get introduced to using Vagrant to create Openstack servers using the Openstack API.
This post is assumes you have already signed up for an account with ovhcloud.com, added a payment method, created a cloud project, created an Openstack user, created a ssh keypair in the Horizon UI and downloaded the openrc.sh file for this user. If you have not done these steps you can follow the steps in the first and second blog post in this series that will walk you through completing those steps.
I will attempt in this post to present the options that are available to OVH public cloud customers along side the choices I made that were specific to my Openstack server.
Let's get started...
1. Install Vagrant
The first thing you will need to do before you can move forward with this post is install Vagrant. Go to https://www.vagrantup.com/downloads.html, download the installer for your specific operating system and install Vagrant.
2. Install the Vagrant Openstack provider
You will next need to install the Vagrant Openstack provider.
3. Create a new directory and add your Vagrantfile
When using the vagrant command, it will look for a Vagrantfile in the current directory. As a result you should create a new directory for containing the Vagrantfile we will use for our Openstack server.
Next you will need to create a Vagrantfile in our new directory that will describe the server you are wanting to have created.
The v.ssh.private_key_path should reference the ssh private key file that was created in our second blog post. The provider.keypair_name should be set to match the name of the keypair you created in the Openstack Horizon UI in the second blog post. The provider.image and provider.flavor values are initially blank, but you will update those shortly.
You also might notice that most of the details in this Vagrantfile are referencing ENV which means they will be pulled from environment variables.
4. Source your openrc.sh file
Source the openrc.sh you previously downloaded for your Openstack user. Enter the password for your Openstack user when prompted. This step will export the environmental variables that the Vagrantfile needs in order to create the Openstack server.
5. Test connecting to the OVH public cloud.
You can now test connecting to the OVH public cloud API by running vagrant status
If you received a message that the server was not created, then your credentials and Openstack details are valid.
6. Using the Vagrant Openstack provider to query for available flavor and images.
The Vagrant Openstack provider can be used us query the Openstack API for available resources. I knew I wanted to use a Centos image so I ran vagrant openstack image-list | egrep '(--|Name|Centos)' to return images that contained the name Centos:
I also knew I wanted to use a sandbox image, which all start with s1 in the name, so I ran vagrant openstack flavor-list | egrep '(--|Name|s1)' to return all s1 images:
6. Update your Vagrantfile to reflect the image and flavor name that you want to use.
After using the Vagrant Openstack provider to return the available image and flavor names, update your Vagrantfile to reference the image and flavor you want to use. I chose “Centos 7” and “s1-2” for mine.
7. Run vagrant up to create the Openstack server
The next step is for you to run vagrant up to create the Openstack server as defined in your Vagrantfile.
I want to give one warning that this command will not succeed successfully with vagrant-openstack-provider version 0.13.0, but we will address these issues in a moment. I pressed control-c after receiving a few of the Host unreachable messages to break out of Vagrant.
If you look back at the output of your command you will see a line displaying a message like SSH address: 2604:2dc0:101:100::1b:22
You will also see that the same IPV6 address is returned for the HostName when you run vagrant ssh-config
8. Updating the Vagrant Openstack provider to return an IPV4 address
There is an open pull request for the Vagrant openstack provider to allow a user to specify if the provider should connect to an IPV4 or IPV6 address. Until that pull request is merge I would suggest making these suggested changes to ~/.vagrant.d/gems/2.4.4/gems/vagrant-openstack-provider-0.13.0/lib/vagrant-openstack-provider/utils.rb
After modifying the utils.rb file try running vagrant ssh-config again to make sure the command is returning an IPV4 address.
8. Use Vagrant to destroy and re-deploy the Openstack server
Now that Vagrant is returning an IPV4 address it should deploy correctly. Destroy your Openstack server by running vagrant destroy -f
...followed by vagrant up to deploy it again
You can see in my output that Vagrant successfully connected to the assigned IPV4 address, installed rsync and used it to copy over the folder that contained the Vagrantfile to /vagrant.
9. Connect to your Openstack server
Connecting to your Openstack server created by Vagrant is as easy as running vagrant ssh
10. Destroy your Vagrant Openstack server.
 This can be done using the same vagrant destroy command we did earlier.
That all for this post covering how to use Vagrant to quickly deploy a OVH public cloud server. In this post you have only scratched the surface of what you can do with Vagrant, but hopefully if showed how simple it is to get started.
Please provide any feedback or suggestions to my twitter account located on the about page.
Please provide any feedback or suggestions to my twitter account located on the about page.
This is the third in a series of posts that will walk you through using the Openstack-based OVH public cloud. In this post you will get introduced to using rclone to upload and retrieve files from the Openstack swift API.
This post is assumes you have already signed up for an account with ovhcloud.com, added a payment method, created a cloud project and created an Openstack user. If you have not done these steps you can follow the steps in the first and second blog post in this series that will walk you through completing those steps.
I will attempt in this post to present the options that are available to OVH public cloud customers along side the choices I made that were specific to my Openstack server.
The first thing you will need to do before you can move forward with this post is sign into https://ovhcloud.com/auth/ using the account you created in the first blog post..
If you setup two-factor authentication, you will be prompted to enter the current two-factor token.
2. Create a object container.
The first step to store files in your OVH Public Cloud will be to create a swift object container to store the files. Object containers are managed by clicking the storage tab of the cloud project you want to store files in.
If you do not have any object containers create, you can create one by clicking the Create a container button.
Select the datacenter you want to create the object container in.
Select what purpose for which you are intending to use the object container storage. I am intending to test file that need to be publicly available, without any sort of authentication, so I chose Public.
Name the object container a name that reflects it's purpose and click Create the container
You will next be taken to a view that lists the details of the newly created object container.
3. Install rclone
Rclone is self described as 'a command line program to sync files and directories to and from cloud storage.' It is opensource and is compatible with Openstack swift, so it will work with OVH Public Cloud object containers.
The first thing you need to do is download the latest version for your operating system from the rclone download page, unzip the binary and place it within our path.
...unzip the binary,
...and place it within a folder that is exported in your path.
The simplest way to use rclone is to source the openrc.sh file you downloaded in the previous blog post. This will set environment variables that the rclone cli will use to connect to the OVH public cloud. When you source the openrc.sh file you will be prompted for the password of the Openstack user listed in this file.
5. Export two RCLONE_CONFIG environment variables
As mentioned on the rclone swift documentation you can use rclone with swift without a config file by exporting two environment variables.
6. Using rclone to list remote object containers.
You can now list all remove object containers by running the command rclone lsd myremote:
If you get tired of seeing the 'rclone.conf not found' informational message, you can get rid of it by creating an empty config file with the same name mentioned.
You can see the command I ran returned the public_storage_container object container I created in step 2.
6. Using rclone to upload files to the object container.
Now that you have confirmed rclone is seeing to the OVH Public Cloud object container you created in step 2, you can upload a file to it. I decided to test with the rclone zip file for OSX that I downlaoded in step 3.
You can now run rclone ls myremote:[object_container_name] to list the contents of your object container. Here is the output of when I ran that command. I also decided to output the size of the file on the local disk to compare the two. Both the local and remote files contain the same number of bytes.
The file sizes of the local and remote files matched, but I also wanted to be safe and compare the local MD5 hashsum
...to the remote hashsum
...and verified that the two hashsums matched.
7. Downloading the file from the public object container.
If you created a public object container, all the files contained within the object container can be downloaded without providing any authentication. You should alway consider the purpose of the files being uploaded to the object container when deciding if it should be private or public.
You can test that the files can be access without any authentication. First confirm the file is visible in the ovhcloud.com UI.
You can then paste the Container URL displayed in the object container in a browser and see all the objects contained in it.
The final test you can do is to add the file name you uploaded to the container URL and test downloading the file.
8. Delete the uploaded file with rclone.
 You can delete the files by running the rclone command of rclone deletefile remote:path. Here is the output of when I ran this command and then listed out the files in my object container to verify it had been deleted..
That all for this post covering how to use the rclone utility to manage your OVH public cloud swift storage.
Please provide any feedback or suggestions to my twitter account located on the about page.
This is the second in a series of posts that will walk you through using the Openstack-based OVH public cloud. In this post you will get introduced to using the Openstack cli to create an Openstack server.
This post is assumes you have already signed up for an account with ovhcloud.com, added a payment method and created a cloud project. If you have not done these steps you can follow the first blog post in this series that will walk you through completing those steps.
I will attempt in this post to present the options that are available to OVH public cloud customers along side the choices I made that were specific to my Openstack server.
The first thing you will need to do before you can move forward with this post is sign into https://ovhcloud.com/auth/ using the account you created in the first blog post..
If you setup two-factor authentication, you will be prompted to enter the current two-factor token.
2. Create a new user account to use with the Openstack API.
The Openstack API will not use the credentials you used to log into the ovhcloud.com site, but will instead use an Openstack user to create, modify or view objects in an OVH cloud project.
If have not created one already, you will need to create an Openstack user account within the cloud project you want to work with. You can display all the Openstack user accounts that have been created in a cloud project by clicking the 'Openstack' tab within any cloud project.
Create a new user by clicking the "Add user" button.
Once you have specified the username and clicked "Confirm" you will be taken back to the Openstack tab. You will see the user you created and will also be able to see the password generated for this user for a short period of time. Make sure you record this password to a safe place since it will not be visible for very long.
After a period of time you will no longer be able to see the password for the user you created, but If you do happen to forget the password, you can always have a new password regenerated.
3. Download an Openstack configuration file.
Now that you have an Openstack user created you can download an openrc.sh file that will contain all the details need by the Openstack cli to connect as this user. Click the '...' icon and the end of the line for the user you want to download a configuration file for and select 'Downloading an Openstack configuration file'.
Select the region (datacenter) you want to connect to and click 'confirm'. Your browser will next prompt you where you want to save the downloaded openrc.sh file.
If you look at the downloaded file you will see that it sets environment variables containing the Openstack details needed to connect to your cloud project.
The only piece of information that this file does not contain is your password, which it will prompt for when you source this file.
4. Log into the Openstack Horizon UI.
Just like you needed to create an Openstack user for interacting with the Openstack API, you will need to create a ssh keypair used for connecting to Openstack servers. This can be done within the Openstack Horizon UI.
Click the ... icon and the end of the line for the user you want to use for interacting with the Openstack API and select Launch Openstack Horizon.
This will open another browser tab for the Openstack Horizon UI with your username already filled in. Provide the password for this user and click connect.
5. Create a ssh key-pair in the Openstack Horizon UI.
We need to add a new ssh keypair that the Openstack API can add to servers that are created through the API. To keep things simple I added the same public ssh key that I generated in the first blog post.
To add a new ssh key pair go to Project | Compute | Key pairs | Create Key Pair
Give the key pair a friendly name you can remember and paste the contents of the public key file. Click Import Key Pair to add this key pair.
The key pair you just added will now be visible in the Horizon UI.
6. Installing the Openstack cli.
You will need to install the openstack cli on the operating system you are using. You can easily find instruction for installing it on whatever OS you prefer to use. I quickly installed it on my Mac laptop with homebrew using the following commands.
7. Sourcing the openrc.sh file
The first step to using the Openstack cli you just installed is to source the openrc.sh file you downloaded in step 3. This will set environment variables that the Openstack cli will use to connect to the OVH public cloud. When you source the openrc.sh file you will be prompted for the password of the Openstack user listed in this file.
If you take a look at your exported environmental variables after sourcing the openrc.sh file, you will see the values from the opensh.rc file set along with your password.
8. Using the Openstack cli to create an Openstack server
Now that you have sourced the openrc.sh file you can create an Openstack server using the Openstack cli.
The four pieces of information you will need to create a new server are:
The ssh key pair name that will be allowed to connect.
The operating system (image) you want to use.
The size of the server (flavor) you want to use.
The security group you want to have applied to the server.
First list the ssh key pairs so you can see the key pair you created in step 5 by running openstack keypair list. You will need the name of this keypair shortly.
Next list the available operating system images by running openstack image list. You will need the ID of the image you want to use
I noted e0a89ff2-e98f-4a34-afae-68f9f6c9b5ad for the ID of the Centos 7 image I wanted to use in my test.
Next list the available server sizes or flavors by running openstack flavor list. You will need the ID of the flavor of the server you want to create. I wanted to use a s1-2 flavor image since it was the smallest sandbox server with the lowest hourly rate, so I noted it's ID was a64381e7-c4e7-4b01-9fbe-da405c544d2e
Finally list the security groups by running openstack security group list. The default security group which allows all inbound and outbound traffic is named default. I decided to use this default security group for my test rather than create a new one that was more restrictive.
The default security group is named default so you will need to specify it when creating a server..
Now knowing the flavor id, image id, keypair name and security group name you are ready to create a new openstack server using a command like the following
Below is a screenshot of me running that command.
After the Openstack server has been created you can run openstack server list to show the details of the server you just created. The networks field will show the IP address of the server.
Now that you know the IP address of the server you just created, You can test connecting to this server using the ssh key you created in the previous blog post.
9. Validating the Openstack server in ovhcloud.com UI
You can check the ovhcloud.com UI to confirm the server has been created and the IP address is the same as what openstack server list displayed.
10. Deleting the Openstack server using the Openstack cli.
Once you are finished with your openstack server, you should delete the server to prevent being charged for it's usage. Run the following command in the Openstack cli to delete the server.
Running openstack server list will show that the server has been sucessfully deleted.
You can also check the ovhcloud.com UI to confirm the server has been deleted.
That all for this post covering how to use the Openstack cli utility to create servers on the OVH public cloud.
Please provide any feedback or suggestions to my twitter account located on the about page.
This is the first in a series of posts that will walk you through using the openstack-based OVH public cloud. In this post you will get introduced to using the ovhcloud.com UI to create an Openstack server.
I will attempt in this post to present the options that are available to OVH public cloud customers along side the choices I made that were specific to my server.
The first thing you will need to do before you can create OVH public cloud servers is setup an account by going to https://ovhcloud.com/auth/ and clicking the 'Create an account' button.
After providing my email address, specifying a complex password and adding my billing address I received an email within minutes that my account had been activated.
2. Setup two-factor authentication.
The second thing you should do after creating an account is setup two-factor authentication. Enabling two-factor authentication will require that you provide a code (token) from your two-factor authentication application on your phone or physical device, along with your username and password when you log into ovhcloud.com. I would highly recommend setting up two-factor authentication to help prevent unauthorized access to your OVH account.
I found the option to enable two-factor authentication by going to My Account | Security | Two-factor authentication | activate double authentication
OVH supports mobile applications and physical devices for two-factor authentication. I selected mobile application since I would be using Google Authenticator.
Next I scanned the QR code on my phone, provided a code (token) generated by the Google Authenticator app and gave it a friendly name.
After clicking next you will be given emergency codes that can be used if you lose your mobile app or physical two-factor device. Copy these emergency codes and store them in a safe place since they can never be retrieved again. After clicking next the two-factor authentication option will show as being enabled.
3. Adding a payment method.
You will now need to add a payment method, since it will be used to purchase cloud credits in the next step. I added a payment method by clicking my username at the upper right, clicking 'My payment methods' and finally clicking the 'Add a payment method' button. Provide your card number, experation date and security code and click the 'Add' button.
Once your payment method shows a "Confirmed" status you are ready to proceed to the next step.
4. Creating a public cloud project.
The next step you need to do is create a cloud project. To do this I went to order dropdown and clicked 'Cloud project'.
Name your project and click 'launch your cloud project'.
On the next screen you will be purchasing credits that your running servers will consume.
Accept the terms and conditions by clicking the check box. Your cloud project will be ordered and payment method charged once you click the 'Validate and pay' button.
I received an email from OVH within 5 minutes of ordering to tell me that my cloud project had been created.
5. Creating a new ssh key for OVH public cloud to use.
You will need to generate a ssh key to connect to the OVH openstack servers. On my mac laptop I ran the following command to generate a new ssh key for this purpose.
The -b option will specify the number of bits in the ssh key.
The -t option with specify the type of ssh key generated.
The -C option will add a comment to the end of the public key file.
The -f option will specify the file that the private key will be saved to.
When running the command you will also get asked you if you want to add a passphrase that will need to be provided when you use the ssh key. I didn't choose to set a passphrase, but you can choose to if you feel the need.
Here is the output from my running of this command.
Output the public key so you can use it in the next step.
6. Add the ssh pub key to the OVH public cloud.
You next need to add the public key generate in the previous step to OVH public cloud so it can be used to connect to servers you create.
Go to the project you created in the previous step. You can find this by clicking Cloud | Servers | [your project name].
Click the 'SSh keys' tab to view or create new ssh keys.
Click 'Add a new key' to add the public key generated in the previous step.
Paste the output from the public key file, provide a friendly name for the ssh key and click "Add this key.'
7. Create a new openstack server.
Under your cloud project and click the Infrastructure tab. From the Actions dropdown click 'Add a server.'
Choose the OS (image) that you want to have deployed.
Select the server type (flavor) of the server you want to create. The server type will specify the number of vcpu, memory, disk size and price per hour of the openstack server that will be created:
Select the ssh key you created in the previous step. Click the 'Launch now' button to create the server.
Once the server is created a 'Login information' window will be displayed with the ssh username and ip address you will need to connect to the server.
8. SSH to the new openstack server,
You can now use the login infomation provided in the last step along with the private ssh key you generated to connect to your new server. I used the following commands to ssh from my Mac laptop to connect.
The -i option is used to specify the ssh private key you generated earlier.
Here is the output from my running of this command.
You can now run what commands you would like on your new openstack server, like checking the IP address of the server you created.
9. Destroy the openstack server.
 Click the drop down on the server and select 'delete' to delete the server.
Click 'Confirm' to confirm that you want to delete the server. This is your last chance to reconsider if you really want to delete it.
Your cloud project will now be back to not showing any servers.
That all for this initial post covering how to sign up and get started using the OVH public cloud.
Please provide any feedback or suggestions to my twitter account located on the about page.


Make sure you are on a system with WebGL 2.0 Compute enabled. Windows Google Chrome or Microsoft Edge Insider Channels with Command Line Switches: "--enable-webgl2-compute-context", "--use-angle=gl" and "--use-cmd-decoder=passthrough".


Source code for lcc.stars_processing.deciders.neuron_decider
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.tools.shortcuts import buildNetwork
from lcc.stars_processing.utilities.base_decider import BaseDecider
import numpy as np
[docs]class NeuronDecider(BaseDecider):
"""
The class is responsible for learning to recognize certain group of objects.
Attributes
-----------
hiden_neurons : int
Number of hiden neurons.
OUTPUT_NEURONS : int
Number of output neurons.
input_neuron : int
Number of input neurons.
X_train : numpy array of array of floats
Each item of the array contains specific "coordinates" of the train
object in array.
X_test : numpy array of array of floats
Each item of the array contains specific "coordinates" of the test
object in array.
y_train : numpy array of ints
Each item of the array contains a number of the group which the train
object belongs. Position in the array
corresponds to item in X_train.
y_test : numpy array of ints
Each item of the array contains a number of the group which the test
object belongs. Position in the array
corresponds to item in X_test.
validationProportion : float
It is the ratio of the dataset
that is used for the validation dataset
maxEpochs : int
Maximum number of epochs for training
"""
OUTPUT_NEURONS = 1
def __init__(self, treshold=0.5, hidden_neurons=2,
validationProportion=0.15, maxEpochs=100):
'''
Parameters
-----------
hidden_neurons: int
Number of hidden neurons
validationProportion : float
It is the ratio of the dataset
that is used for the validation dataset
maxEpochs : int
Maximum number of epochs for training
Note
-----
Attributes with None values will be updated by setTrainer
and train methods
'''
self.hiden_neurons = hidden_neurons
self.input_neuron = None
self.X = None
self.y = None
self.treshold = treshold
self.validationProportion = validationProportion
self.maxEpochs = maxEpochs
[docs] def learn(self, searched, others):
'''
This method loads lists of specific values of searched objects and
others. Then the sample will be divided into train and
test samples according to user.
Parameters
-----------
searched : iterable
List of searched objects values (their "coordinates")
others : iterable
List of other objects values (their "coordinates")
Returns
-------
NoneType
None
'''
if not len(searched) or not len(others):
raise Exception("Decider can't be learned on an empty sample")
# Resolve number of input neurons
self.input_neurons = len(searched[0])
# Input is accepted as a numpy array or as a list
if type(searched) != list:
try:
X = searched.tolist() + others.tolist()
except AttributeError as err:
raise AttributeError("Wrong input: %s" % err)
elif type(searched) == list:
X = np.array(searched + others)
# Note searched objects as 1 and others as 0
self.y = np.array(
[1 for i in range(len(searched))] + [0 for i in range(len(others))])
self.X = X
# Prepare button for executing of training
self.train()
[docs] def getTrainer(self):
'''
Returns
--------
pybrain net instance, SupervisedDataSet
Learned net object, empty SupervisedDataSet which can be loaded
by sample of inspected objects
'''
return self.net, SupervisedDataSet(self.input_neurons, self.OUTPUT_NEURONS)
[docs] def train(self):
"""Train neuron grid by training sample"""
# Prepare the network
self.net = buildNetwork(
self.input_neurons, self.hiden_neurons, self.OUTPUT_NEURONS)
# Insert train sample into the network
ds = SupervisedDataSet(self.input_neurons, self.OUTPUT_NEURONS)
for i, coord in enumerate(self.X):
ds.addSample(coord, (self.y[i],))
# Prepare the network trainer and train them
trainer = BackpropTrainer(self.net, ds)
trainer.trainUntilConvergence(validationProportion=self.validationProportion,
maxEpochs=self.maxEpochs)
print "Successfully finished"
[docs] def evaluate(self, coords):
'''
Find if inspected parameter-space coordinates belongs to searched
object
Parameter
---------
coords : list of lists
Parameter-space coordinates of inspected objects
Returns
------
numpy.array
Probabilities of membership to searched group objects
'''
pred = []
for coord in coords:
p = self.net.activate(coord)[0]
if p < 0:
p = 0
elif p > 1:
p = 1
pred.append(p)
return np.array(pred)


/** * @class Components.Network.SocketIo.IgeSocketIoServer * @alternateClassName IgeSocketIoServer */ var IgeSocketIoServer = { _idCounter: 0, _requests: {}, /** * Starts the network for the server. * @param {*} data The port to listen on. * @param {Function=} callback A callback method to call once the * network has started. */ start: function (data, callback) { var self = this; this._socketById = {}; this._socketsByRoomId = {}; if (typeof(data) !== 'undefined') { this._port = data; } // Start socket.io this.log('Starting socket.io listener on port ' + this._port); this._io = this._socketio.listen(this._port); // Set the logging level to errors only this._io.set('log level', 0); // Compress socket.io.js for faster serving this._io.enable('browser client minification'); this._io.enable('gzip'); // Setup listeners this._io.sockets.on('connection', function (socket) { self._onClientConnect(socket); }); if (typeof(callback) === 'function') { callback(); } // Set some default commands this.define('_igeRequest', function () { self._onRequest.apply(self, arguments); }); this.define('_igeResponse', function () { self._onResponse.apply(self, arguments); }); this.define('_igeNetTimeSync', function () { self._onTimeSync.apply(self, arguments); }); // Start network sync this.timeSyncStart(); return this._entity; }, /** * Sets a network command and optional callback. When a network command * is received by the server, the callback set up for that command will * automatically be called and passed the data from the incoming network * packet. * @param {String} commandName The name of the command to define. * @param {Function=} callback A function to call when the defined network * command is received by the network. * @return {*} */ define: function (commandName, callback) { if (commandName !== undefined) { this._networkCommands[commandName] = callback; // Record reverse lookups var index = this._networkCommandsIndex.length; this._networkCommandsIndex[index] = commandName; this._networkCommandsLookup[commandName] = index; return this._entity; } else { this.log('Cannot define a network command without a commandName parameter!', 'error'); } }, /** * Adds a client to a room by id. All clients are added to room id * "ige" by default when they connect to the server. * @param {String} clientId The id of the client to add to the room. * @param {String} roomId The id of the room to add the client to. * @returns {*} */ clientJoinRoom: function (clientId, roomId) { if (clientId !== undefined) { if (roomId !== undefined) { this._clientRooms[clientId] = this._clientRooms[clientId] || []; this._clientRooms[clientId].push(roomId); this._socketsByRoomId[roomId] = this._socketsByRoomId[roomId] || {}; this._socketsByRoomId[roomId][clientId] = this._socketById[clientId]; if (this.debug()) { this.log('Client ' + clientId + ' joined room ' + roomId); } return this._entity; } this.log('Cannot add client to room because no roomId was provided!', 'warning'); return this._entity; } this.log('Cannot add client to room because no clientId was provided!', 'warning'); return this._entity; }, /** * Removes a client from a room by id. All clients are added to room id * "ige" by default when they connect to the server and you can remove * them from it if your game defines custom rooms etc. * @param {String} clientId The id of the client to remove from the room. * @param {String} roomId The id of the room to remove the client from. * @returns {*} */ clientLeaveRoom: function (clientId, roomId) { if (clientId !== undefined) { if (roomId !== undefined) { if (this._clientRooms[clientId]) { this._clientRooms[clientId].pull(roomId); delete this._socketsByRoomId[roomId][clientId]; } return this._entity; } this.log('Cannot remove client from room because no roomId was provided!', 'warning'); return this._entity; } this.log('Cannot remove client from room because no clientId was provided!', 'warning'); return this._entity; }, /** * Removes a client from all rooms that it is a member of. * @param {String} clientId The client id to remove from all rooms. * @returns {*} */ clientLeaveAllRooms: function (clientId) { if (clientId !== undefined) { var arr = this._clientRooms[clientId], arrCount = arr.length; while (arrCount--) { this.clientLeaveRoom(clientId, arr[arrCount]); } delete this._clientRooms[clientId]; return this._entity; } this.log('Cannot remove client from room because no clientId was provided!', 'warning'); return this._entity; }, /** * Gets the array of room ids that the client has joined. * @param clientId * @returns {Array} An array of string ids for each room the client has joined. */ clientRooms: function (clientId) { if (clientId !== undefined) { return this._clientRooms[clientId] || []; } this.log('Cannot get/set the clientRoom id because no clientId was provided!', 'warning'); return []; }, /** * Returns an associative array of all connected clients * by their ID. * @param {String=} roomId Optional, if provided will only return clients * that have joined room specified by the passed roomId. * @return {Array} */ clients: function (roomId) { if (roomId !== undefined) { return this._socketsByRoomId[roomId]; } return this._socketById; }, /** * Returns the socket associated with the specified client id. * @param {String=} clientId * @return {*} */ socket: function (clientId) { return this._socketById[clientId]; }, /** * Gets / sets the current flag that determines if client connections * should be allowed to connect (true) or dropped instantly (false). * @param {Boolean} val Set to true to allow connections or false * to drop any incoming connections. * @return {*} */ acceptConnections: function (val) { if (typeof(val) !== 'undefined') { this._acceptConnections = val; if (val) { this.log('Server now accepting connections!'); } else { this.log('Server no longer accepting connections!'); } return this._entity; } return this._acceptConnections; }, send: function (commandName, data, clientId) { var commandIndex = this._networkCommandsLookup[commandName], arrCount, clientSocket; if (commandIndex !== undefined) { if (clientId) { if (typeof(clientId) === 'object') { // The clientId is an array, loop it and send to each client arrCount = clientId.length; while (arrCount--) { clientSocket = this._socketById[clientId[arrCount]]; if (clientSocket) { clientSocket.json.send([commandIndex, data]); } else { this.log('Warning, client with ID ' + clientId[arrCount] + ' not found in socket list!') } } } else { // The clientId is a string, send to individual client clientSocket = this._socketById[clientId]; if (clientSocket) { clientSocket.json.send([commandIndex, data]); } else { this.log('Warning, client with ID ' + clientId + ' not found in socket list!') } } } else { this._io.sockets.json.send([commandIndex, data]); } } else { this.log('Cannot send network packet with command "' + commandName + '" because the command has not been defined!', 'error'); } }, /** * Sends a network request. This is different from a standard * call to send() because the recipient code will be able to * respond by calling ige.network.response(). When the response * is received, the callback method that was passed in the * callback parameter will be fired with the response data. * @param {String} commandName * @param {Object} data * @param {Function} callback */ request: function (commandName, data, callback) { // Build the request object var req = { id: this.newIdHex(), cmd: commandName, data: data, callback: callback, timestamp: new Date().getTime() }; // Store the request object this._requests[req.id] = req; // Send the network request packet this.send( '_igeRequest', { id: req.id, cmd: commandName, data: req.data } ); }, /** * Sends a response to a network request. * @param {String} requestId * @param {Object} data */ response: function (requestId, data) { // Grab the original request object var req = this._requests[requestId]; if (req) { // Send the network response packet this.send( '_igeResponse', { id: requestId, cmd: req.commandName, data: data }, req.clientId ); // Remove the request as we've now responded! delete this._requests[requestId]; } else { this.log('Cannot send response to unidentified request ID: ' + requestId, 'warning'); } }, /** * Generates a new 16-character hexadecimal unique ID * @return {String} */ newIdHex: function () { this._idCounter++; return (this._idCounter + (Math.random() * Math.pow(10, 17) + Math.random() * Math.pow(10, 17) + Math.random() * Math.pow(10, 17) + Math.random() * Math.pow(10, 17))).toString(16); }, /** * Called when the server receives a client connection request. Sets * up event listeners on the socket and sends the client the initial * networking data required to allow network commands to operate * correctly over the connection. * @param {Object} socket The client socket object. * @private */ _onClientConnect: function (socket) { var self = this; if (this._acceptConnections) { if (!this.emit('connect', socket)) { this.log('Accepted connection with id ' + socket.id); this._socketById[socket.id] = socket; // Store a rooms array for this client this._clientRooms[socket.id] = this._clientRooms[socket.id] || []; socket.on('message', function (data) { self._onClientMessage(data, socket.id); }); socket.on('disconnect', function (data) { self._onClientDisconnect(data, socket); }); // Send an init message to the client socket.json.send({ cmd: 'init', ncmds: this._networkCommandsLookup }); } else { // Reject the connection socket.disconnect(); } } else { this.log('Rejecting connection with id ' + socket.id + ' - we are not accepting connections at the moment!'); socket.disconnect(); } }, /** * Called when the server receives a network message from a client. * @param {Object} data The data sent by the client. * @param {Object} clientId The client socket object. * @private */ _onClientMessage: function (data, clientId) { var commandName = this._networkCommandsIndex[data[0]]; if (this._networkCommands[commandName]) { this._networkCommands[commandName](data[1], clientId); } this.emit(commandName, [data[1], clientId]); }, _onRequest: function (data, clientId) { // The message is a network request so fire // the command event with the request id and // the request data data.clientId = clientId; this._requests[data.id] = data; if (this.debug()) { console.log('onRequest', data); console.log('emitting', data.cmd, [data.id, data.data]); this._debugCounter++; } if (this._networkCommands[data.cmd]) { this._networkCommands[data.cmd](data.data, clientId, data.id); } this.emit(data.cmd, [data.id, data.data, clientId]); }, _onResponse: function (data, clientId) { // The message is a network response // to a request we sent earlier id = data.id; // Get the original request object from // the request id req = this._requests[id]; if (this.debug()) { console.log('onResponse', data); this._debugCounter++; } if (req) { // Fire the request callback! req.callback(req.cmd, [data.data, clientId]); // Delete the request from memory delete this._requests[id]; } }, /** * Called when a client disconnects from the server. * @param {Object} data Any data sent along with the disconnect. * @param {Object} socket The client socket object. * @private */ _onClientDisconnect: function (data, socket) { this.log('Client disconnected with id ' + socket.id); this.emit('disconnect', socket.id); // Remove them from all rooms this.clientLeaveAllRooms(socket.id); delete this._socketById[socket.id]; } }; if (typeof(module) !== 'undefined' && typeof(module.exports) !== 'undefined') { module.exports = IgeSocketIoServer; }


Last Updated: June 30, 2020
IMPORTANT NOTICE: THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION AND A WAIVER OF CLASS ACTION RIGHTS AS DETAILED IN SECTION 13. PLEASE READ THE AGREEMENT CAREFULLY.
Kukai Wallet (hereinafter “Kukai,” “we,” “us,” or “our”) provides a platform for managing Tezos accounts, and allowing ordinary websites and applications to interact with the blockchain network, while keeping the user in control over what transactions they approve, through our website located at https://kukai.app/ (the “Site”), which includes text, images, audio, code and other materials (collectively, the “Content”) and all of the features, and services provided. The Site and any other features, tools, materials, or other services offered from time to time by Kukai Wallet are referred to here as the “Services.” Please read these Terms of Use (the “Terms”) carefully before using the Services. By using or otherwise accessing the Services, or clicking to accept or agree to these Terms where that option is made available, you (1) accept and agree to these Terms, (2) consent to the collection, use, disclosure and other handling of information as described in our Privacy Policy and (3) agree to any additional terms, rules and conditions of participation issued by Kukai Wallet from time to time. If you do not agree to any of the Terms, then you may not access or use the Content or Services.
Except for Section 13, providing for arbitration and waiver of class action rights, Kukai Wallet reserves the right, at its sole discretion, to modify or replace the Terms at any time without notice. We will always try to provide advance notice, however, we reserve the right to modify or replace the Terms at our discretion. The most current version of these Terms will be posted on our Site. You shall be responsible for reviewing and becoming familiar with any such modifications. Use of the Services by you after any modification to the Terms constitutes your acceptance of the Terms as modified.
You hereby represent and warrant that you are fully able and competent to enter into the terms, conditions, obligations, affirmations, representations and warranties set forth in these Terms and to abide by and comply with these Terms.
Kukai Wallet is a global platform and by accessing the Content or Services, you are representing and warranting that you are of the legal age of majority in your jurisdiction as is required to access such Services and Content and enter into arrangements as provided by the Services. You further represent that you are otherwise legally permitted to use the service in your jurisdiction including owning cryptographic tokens of value, and interacting with the Services or Content in any way. You further represent you are responsible for ensuring compliance with the laws of your jurisdiction and acknowledge that Kukai Wallet is not liable for your compliance with such laws.
In addition, you represent to us that you and your financial institutions, or any party that owns or controls you or your financial institutions, are (1) not subject to sanctions or otherwise designated on any list of prohibited or restricted parties, including but not limited to the lists maintained by the United Nations Security Council, the U.S. Government (e.g., the Specially Designated Nationals List and Foreign Sanctions Evaders List of the U.S. Department of Treasury and the Entity List of the U.S. Department of Commerce), the European Union or its Member States, or other applicable government authority and (2) not located in any country to which the United States has embargoed goods or has otherwise applied any sanctions.
When setting up an account within Kukai Wallet, you will be responsible for keeping your own account secrets, which may be a word seed phrase, an account file, or other locally stored secret information. Kukai Wallet encrypts this information locally with a password you provide, that we never send to our servers. You agree to (a) never use the same password for Kukai Wallet that you have ever used outside of this service, (b) keep your secret information and password confidential and do not share them with anyone else and (c) immediately notify Kukai Wallet of any unauthorized use of your account or breach of security. Kukai Wallet cannot and will not be liable for any loss or damage arising from your failure to comply with this section.
You expressly understand and agree that your use of the Services is at your sole risk. The Services (including the Site and the Content) are provided on an “as is” and “as available” basis, without warranties of any kind, either express or implied, including, without limitation, implied warranties of merchantability, fitness for a particular purpose or non-infringement. You acknowledge that Kukai Wallet has no control over, and no duty to take any action regarding: which users gain access to or use the Services; what effects the Content may have on you; how you may interpret or use the Content; or what actions you may take as a result of having been exposed to the Content. You release Kukai Wallet from any and all liability for you having acquired or not acquired Content through the Services. Kukai Wallet makes no representations concerning any Content contained in or accessed through the Services, and Kukai Wallet will not be responsible or liable for the accuracy, copyright compliance, legality or decency of material contained in or accessed through the Services.
We do not represent or warrant that access to the Services will be continuous, uninterrupted, timely or secure. You acknowledge and accept that the Services (a) may contain bugs, errors and defects, (b) may function improperly or be subject to periods of downtime and unavailability, (c) may result in total or partial loss or corruption of data and (d) may be modified at any time, including through the release of subsequent versions, all with or without notice to you.
You acknowledge that Kukai Wallet is not responsible for transferring, safeguarding, or maintaining your private keys or any digital currency associated therewith. If you lose, mishandle or have stolen associated digital currency private keys, you acknowledge that you may not be able to recover associated digital currency, and that Kukai Wallet is not responsible for such loss. You acknowledge that Kukai Wallet is not responsible for any loss, damage or liability arising from your failure to comply with the terms hereunder.
By utilizing the Services or interacting with the Content or platform in any way, you represent that you understand the inherent risks associated with cryptographic systems; and warrant that you have an understanding of the usage and intricacies of the native cryptographic token Tezos (xtz), smart contract based tokens, and blockchain-based software systems.
Kukai Wallet and any supported cryptographic token and blockchain could be impacted by one or more regulatory inquiries or regulatory action, which could impede or limit the ability of Kukai Wallet to continue to develop, or which could impede or limit your ability to access or use the Services or the underlying blockchain network.
You acknowledge and understand that Cryptography is a progressing field. Advances in code cracking or technical advances such as the development of quantum computers may present risks to cryptocurrencies and Services of Content, which could result in the theft or loss of your cryptographic tokens or property. To the extent possible, Kukai Wallet intends to update the protocol underlying Services to account for any advances in cryptography and to incorporate additional security measures, but does not guarantee or otherwise represent full security of the system. By using the Services or accessing Content, you acknowledge these inherent risks.
You understand that Tezos and other blockchain technologies and associated cryptographic tokens are highly volatile due to many factors including but not limited to adoption, speculation, technology and security risks. You also acknowledge that the cost of transacting on such technologies is variable and may increase at any time causing impact to any activities taking place on the blockchain network. You acknowledge these risks and agree that Kukai Wallet cannot be held liable for such fluctuations or increased costs.
You further acknowledge that blockchain applications are code subject to flaws and acknowledge that you are solely responsible for evaluating any code provided by the Services or Content and the trustworthiness of any third-party websites, products, smart-contracts, or Content you access or use through the Services. You further expressly acknowledge and represent that blockchain applications can be written maliciously or negligently, that Kukai Wallet cannot be held liable for your interaction with such applications and that such applications may cause the loss of property or even identity. This warning and others later provided by Kukai Wallet in no way evidence or represent an on-going duty to alert you to all of the potential risks of utilizing the Services or Content. The code to Kukai Wallet can be found at: https://github.com/kukai-wallet/kukai.
You agree to release and to indemnify, defend and hold harmless Kukai Wallet and its principles, subsidiaries, affiliates and agencies, as well as the officers, directors, employees, shareholders and representatives of any of the foregoing entities, from and against any and all losses, liabilities, expenses, damages, costs (including attorneys’ fees and court costs) claims or actions of any kind whatsoever arising or resulting from your use of the Services, your violation of these Terms, and any of your acts or omissions that implicate publicity rights, defamation or invasion of privacy, and privacy laws. Kukai Wallet reserves the right, at its own expense, to assume exclusive defense and control of any matter otherwise subject to indemnification by you and, in such case, you agree to cooperate with Kukai Wallet in the defense of such matter.

SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, SOME OF THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU.
All title, ownership and intellectual property rights in and to the Services are owned by Kukai Wallet or its licensors. You acknowledge and agree that the Services contains proprietary and confidential information that is protected by applicable intellectual property and other laws. Except as expressly authorized by Kukai Wallet, you agree not to copy, modify, rent, lease, loan, sell, distribute, perform, display or create derivative works based on the Site, or the Services, in whole or in part.
We grant you limited, non-exclusive, revocable permission to make use of the Site, and the Services (collectively referred to as, “Access”). This Access shall remain in effect until and unless terminated by you or us. You promise and agree that you will not redistribute or transfer the Services.
The Kukai Wallet software application, including without limitation the Site, and the Services, are not sold or transferred to you, and Kukai Wallet and its licensors retain ownership of all copies of the software applications even after installation on your personal computers, mobile handsets, tablets, wearable devices, speakers and/or other devices (“Devices”).
All Kukai Wallet trademarks, service marks, trade names, logos, domain names, and any other features of the Kukai Wallet brand (“Kukai Wallet Brand Features”) are the sole property of Kukai Wallet or its licensors. The Terms do not grant you any rights to use any Kukai Wallet Brand Features whether for commercial or non-commercial use.
You agree to abide by our user guidelines and not to use the Services or any part thereof in any manner not expressly permitted by the Terms. Except for the rights expressly granted to you in the Terms, Kukai Wallet grants no right, title, or interest to you in the Site or the Services.
Third party software (for example, open source software libraries) included in the Services are made available to you under the relevant third party software library’s license terms.
Notwithstanding anything herein to the contrary, nothing in the Terms entitles you to copy, modify, fork, merge, combine with another program or create a derivative work of the Services, including without limitation the Site.
The Services provide, or third parties may provide, links to other World Wide Web or accessible sites, applications or resources. Because Kukai Wallet has no control over such sites, applications and resources, you acknowledge and agree that Kukai Wallet is not responsible for the availability of such external sites, applications or resources, and does not endorse and is not responsible or liable for any content, advertising, products or other materials on or available from such sites or resources. You further acknowledge and agree that Kukai Wallet shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such site or resource.
Kukai Wallet may terminate or suspend all or part of the Services and your Kukai Wallet access immediately, without prior notice or liability, if you breach any of the terms or conditions of the Terms. Upon termination of your access, your right to use the Services will immediately cease.
The following provisions of the Terms survive any termination of these Terms: INDEMNITY; WARRANTY DISCLAIMERS; LIMITATION ON LIABILITY; OUR PROPRIETARY RIGHTS; LINKS; TERMINATION; NO THIRD PARTY BENEFICIARIES; BINDING ARBITRATION AND CLASS ACTION WAIVER; GENERAL INFORMATION.
You agree that, except as otherwise expressly provided in these Terms, there shall be no third party beneficiaries to the Terms.
If you believe that your copyright or the copyright of a person on whose behalf you are authorized to act has been infringed, please provide Kukai Wallet’s Copyright Agent a written Notice containing the following information:
- an electronic or physical signature of the person authorized to act on behalf of the owner of the copyright or
other intellectual property interest;
- a description of the copyrighted work or other intellectual property that you claim has been infringed;
- a description of where the material that you claim is infringing is located on the Services;
your address, telephone number, and email address;
- a statement by you that you have a good faith belief that the disputed use is not authorized by the copyright
owner, its agent, or the law;
- a statement by you, made under penalty of perjury, that the above information in your Notice is accurate and
that you are the copyright or intellectual property owner or authorized to act on the copyright or intellectual
property owner’s behalf.
Kukai Wallet’s Copyright Agent can be reached at:
Email<EMAIL_ADDRESS>PLEASE READ THIS SECTION CAREFULLY – IT MAY SIGNIFICANTLY AFFECT YOUR LEGAL RIGHTS, INCLUDING YOUR RIGHT TO FILE A LAWSUIT IN COURT
The parties shall use their best efforts to engage directly to settle any dispute, claim, question, or disagreement and engage in good faith negotiations which shall be a condition to either party initiating a lawsuit or arbitration.
If the parties do not reach an agreed upon solution within a period of 30 days from the time informal dispute resolution under the Initial Dispute Resolution provision begins, then either party may initiate arbitration as the sole means to resolve all claims, subject to the terms set forth below. Specifically, all claims arising out of or relating to these Terms (including their formation, performance and breach), the parties’ relationship with each other and/or your use of the Services shall be finally settled by binding arbitration administered by the American Arbitration Association in accordance with the provisions of its Commercial Arbitration Rules and the supplementary procedures for consumer related disputes of the American Arbitration Association (the “AAA”), excluding any rules or procedures governing or permitting class actions.
The arbitrator, and not any federal, state or local court or agency, shall have exclusive authority to resolve all disputes arising out of or relating to the interpretation, applicability, enforceability or formation of these Terms, including, but not limited to any claim that all or any part of these Terms are void or voidable, or whether a claim is subject to arbitration. The arbitrator shall be empowered to grant whatever relief would be available in a court under law or in equity. The arbitrator’s award shall be written, and binding on the parties and may be entered as a judgment in any court of competent jurisdiction.
The parties understand that, absent this mandatory provision, they would have the right to sue in court and have a jury trial. They further understand that, in some instances, the costs of arbitration could exceed the costs of litigation and the right to discovery may be more limited in arbitration than in court.
Binding arbitration shall take place in Louisiana. You agree to submit to the personal jurisdiction of any federal or state court in Orleans Parish, Louisiana, in order to compel arbitration, to stay proceedings pending arbitration, or to confirm, modify, vacate or enter judgment on the award entered by the arbitrator.
The parties further agree that any arbitration shall be conducted in their individual capacities only and not as a class action or other representative action, and the parties expressly waive their right to file a class action or seek relief on a class basis. YOU AND KUKAI WALLET AGREE THAT EACH MAY BRING CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE PROCEEDING. If any court or arbitrator determines that the class action waiver set forth in this paragraph is void or unenforceable for any reason or that an arbitration can proceed on a class basis, then the arbitration provision set forth above shall be deemed null and void in its entirety and the parties shall be deemed to have not agreed to arbitrate disputes.
Notwithstanding the parties’ decision to resolve all disputes through arbitration, either party may bring an action in state or federal court to protect its intellectual property rights (“intellectual property rights” means patents, copyrights, moral rights, trademarks, and trade secrets, but not privacy or publicity rights). Either party may also seek relief in a small claims court for disputes or claims within the scope of that court’s jurisdiction.
The Terms and the relationship between you and Kukai Wallet shall be governed by the laws of the State of Louisiana without regard to conflict of law provisions.
These Terms (and any additional terms, rules and conditions of participation that Kukai Wallet may post on the Services) constitute the entire agreement between you and Kukai Wallet with respect to the Services and supersedes any prior agreements, oral or written, between you and Kukai Wallet. In the event of a conflict between these Terms and the additional terms, rules and conditions of participation, the latter will prevail over the Terms to the extent of the conflict.
The failure of Kukai Wallet to exercise or enforce any right or provision of the Terms shall not constitute a waiver of such right or provision. If any provision of the Terms is found by an arbitrator or court of competent jurisdiction to be invalid, the parties nevertheless agree that the arbitrator or court should endeavor to give effect to the parties’ intentions as reflected in the provision, and the other provisions of the Terms remain in full force and effect.
You agree that regardless of any statute or law to the contrary, any claim or cause of action arising out of or related to the use of the Services or the Terms must be filed within one (1) year after such claim or cause of action arose or be forever barred.
The section titles in the Terms are for convenience only and have no legal or contractual effect.
Users with questions, complaints or claims with respect to the Services may contact us using the relevant contact information set forth above or email us at: contact@kukai.app


Add Notification
Note: A notification should include at least
one of Title, Text Content, and Shared Image so that it can be
rendered in the UI. When the notification is first sent, the notification
ID and Inline Reply ID will not be editable anymore. Sent notifications will
have a green background. To update a notification, change the fields and
click the Update button. To remove a notification, click the Remove button.


debug commands appear in console log "daw" to delete word "p" to paste deleted word "yy" to yank line ( "di)" to delete inside this bracket ) ... and many others!
Log:


[Preliminary remarks: I
sincerely apologise for the fact that due to the prevailing circumstances,
and the conditions under which this text has been composed, I have been
unable:
- to avoid some repetitions in its various
parts,
- to display a fully consistent transliteration,
some words or expressions appearing in the ITRANS 5.1 encoding scheme,
while some others appear with the usual diacritics (but placed after the
letter instead of above it, as impossible in a standard wordprocessor),
and long vowels are shown with a circumflex (often used when gallicising
or diplaying in French texts Sanskrit words in fonts with no macron available;
(Hence what should be in strict ITRANS ďshriiĒ may appear here as Sírî.)
I do hope these stylistic and typographic defects will no make the reading
too tedious.
I have been kindly requested to write an article about my experience and interest in the IITM Software. Upon receiving this suggestion I must confess I met with two contradictory feelings. On the one hand, I was pleased and even also somewhat proud; I felt glad indeed if I could in any way bring a contribution to young Indian students, as being myself a Westerner with a very great moral and spiritual debt towards Mother India, at least and at last I could perhaps do something useful towards Her and her children.
On the other end, I felt
somewhat reluctant because writing such an article meant inevitably speaking
at length about myself, which I do hate and find utterly repellent. Even
in French we use to say: « le moi est haïssable », i.e.
« The I is detestable ». And I was deeply aware of that long
before I read the famous words from the Bhagavatpaada:
manobuddhyaha.nkaarachittaani naahaM.
But after pondering carefully over the subject
the first feeling overcame the second, and here follows my small article
(at least I shall try to make it short in spite of an inborn tendency to
be often quite talkative and prone to unending comments). I shall make
it in three parts:
I. My condition as a heavily disabled person
II. My interest in the Sanaatana Dharma
III. My interest in the IITM software
I. My condition as a heavily disabled person
I was fortunate enough not to be born disabled nor did it happen during my childhood, which thanks to the Gods was very healthy and happy, apart from the fact that my father died when I was very young, only just more than 10 year old, which had very crucial and long lasting consequences for the rest of my life.
Now aged 55, my handicap came totally unexpectedly a few days before my 49th birthday in the end of 1994, when all of a sudden as a result of overwork, strain and stress (I was the Managing Director of a medium-sized company and did not hesitate during several years in very difficult business circumstances to work for 14 and to 16 hour a day) I had a brain infarct, which resulted in a stroke of hemiplegia and I remained paralysed on the left side of my body. In one way, I was rather fortunate and blessed by the Gods that, first I did not die on the spot, or during the first three following days, which is often the case, and second that the accident took place in the right side of my brain, thus affecting the left side of my body; should had it been the reverse, I should have lost speech and my hand-writing capability, a full disaster for me who happen to be a right-handed person. After six months of highly dedicated rehabilitation in a physiotherapy clinic, with a lot of will, endurance and determination I could recover pretty well but not enough to be able to take up my old job again. I was dismissed by my company in 1995 and was declared an invalid by the French Social Security. Since then I am so to say a kind of person in early retirement.
Unfortunately in 1995 and
1997 I experienced some more health problems in my brain that more or less
ruined the good recovery I had reached before those complications.
The biggest problem for me comes from my left hand that is now virtually
dead. Prior to my accident I was very excellent indeed at typing on a keyboard,
having learnt at school during my commercial studies, and using professionally
and rapidly all my ten fingers from both hands. Now I can type with only
three fingers of my right hand.
II. My interest in the Sanaatana Dharma
Born in France, (in a family
native of Alsace near the German border, why my name does not sound typically
French, like Dupont or Durand), just after Worl War II, in late November
1945, I had always been a very religious boy, but when I reached 14, I
could no longer remain satisfied with the creeds, beliefs and practices
of the Roman Catholic Church, in which I had been being born and educated.
These did not appear to me « catholic » enough, as this word
should originally mean « universal ». One day, about November
1960 (i.e. aged more or less exactly 15), while looking at random at books
in a bookshop that I used to visit quite often (in Paris where I was born
and living at that time), I started to turn over, just by a stroke of luck,
the pages of the French translation of « Jñâna Yoga
» of Svâmî Vivekânanda, and was seized with wonder
seeing that the book included two chapters on a universal religion. I felt
this was exactly what I was longing for, and I bought the book immediately
and read it eagerly from cover to cover: I was overwhelmed with joy and
wanted to know more. After reading « Jñâna Yoga
» several times, I wanted to know also about S'rî Râmakrishna.
I started to look for further literature on the Paramahamsa, and in a rather
small booklet learnt at last that there existed one Râmakrishna Vedânta
Centre in France. I got the address from the Indian Embassy in Paris. All
these investigations had of course taken some time, and it was only in
early May 1961 (it was thus exactly 40 years on the 4th of May 2001), aged
15 year and a half, that I first visited the French Râmakrishna Vedânta
Centre in Gretz.There, I came fortunately very rapidly into a tight and
friendly relationship with a brahmâcâri, disciple of the late
Svâmî Siddhes'varânanda, who had founded the Centre in
1937 in Paris, and had then established it in Gretz in 1947. Unfortunately
he had passed away 4 years earlier, in beginning April 1957 and I could
not meet him personally. Svâmî Siddhes'varânanda was
himself a disciple of Svâmî Brahmânanda, a direct disciple
of S'rî Râmakrishna, appearing often in the so-called «
Gospel » (I do not like the use of this Christian name and prefer
to stick to the original tittle « Kathâmrita »: Svâmî
Brahmânanda was Râkhâl, in the inner circle of young
disciples, and later he became the President of the Math and Mission).
I became fortunately very rapidly an enthusiastic student of the above-mentioned
brahmâcâri.
My main subject of study with my Vedânta
teacher (apart from the teachings of Paramahamsa S'rî Râmakrishna)
was avasthâtraya vicâra as taught to Svâmî Siddhes'varânanda
by his own teacher in philosophy S'rî V. Subrahmania Iyer, a prominent
philosopher of the XXth century (reader in Philosophy of the Mahârâja
of Mysore) and himself (S'rî Iyer) a disciple of His Holiness S'rî
Saccidânanda S'ivâbhinava Narasimha Bharatî Mahasvâmî,
Jagadguru of S'ringeri from 1878 to 1912.
Svâmî Siddhes'varânanda always insisted on the fact that exactly as one needs two legs for walking or two hands for working (I experience myself this point every day more painfully than anybody else), we need, in this age, for our spiritual life to harmonise the teachings of S'rî Râmakrishna and the pure Vedânta of S'ankara as taught by the above-mentioned Jagadguru of S'ringeri to S'rî Subrahmania Iyer, and mainly emphasizing avasthâtraya vicâra, the major and unique contribution of the Indian philosophy to the universal philosophy, most of the other aspects of the Indian philosophy or theology having already more or less their equivalent or counterpart in the Western thought. That is what I dedicated my life to.
Apart from a repeated study of the Bhagavad Gîtâ and of course all major Upanishads I had a special interest for the mANDUkyakArikA of GauDaPAda, which deals only with the avastha-s.
Also, I read again and again and studied very carefully, and even translated in parts « VEDÂNTA, OR THE SCIENCE OF REALITY » of S'rî K.A. Krishnasvami Iyer.
Having also studied all
four volumes of THE CULTURAL HERITAGE OF INDIA, published by the RAMAKRISHNA
INSTITUTE OF CULTURE, I translated into French the two articles from volume
III:
THE ESSENTIALS OF VEDANTA by S'rî V.
Subrahmania Iyer and
PHILOSOPHY OF ADVAITA by S'rî K.A. Krishnasvami
Iyer
I also translated into French
MAN'S INTEREST IN PHILOSOPHY by S'rî
V. Subrahmania Iyer first published in 1936 by Messrs Allen and Unwin in
« CONTEMPORARY INDIAN PHILOSOPHY » edited by S. Radhakrishnan
and J.H. Muirhead in the Muirhead Library of Philosophy and also later
included in « THE PHILOSOPHY OF TRUTH OR TATTVAGNANA » a collection
of speeches and writings by Sri V. Subrahmania Iyer edited by Dr T.M.P.
MAHADEVAN, Department of Philosophy, University of Madras, 1955, upon request
of S'rî Iyer's family.
But none of these translations have been published so far. I shall hand them to my sons who shall make a good use of it, I feel sure. (more in § III.)
As my father had passed away when I was only a little more than 10 year old, and that we were not rich people, I could not afford long academic studies (quite attracted by languages, I should have felt inclined to study Sanskrit at the University, along with Bengali, to be able to read the S'rî Râmakrishna Kathâmrita in the original language, and possibly translate it into French), but instead I had to start earning my living just after finishing my military training.
Thus, slightly over 20 equipped only with basic occupational commercial studies acquired before my military training (from 15 to 19), I started a nearly 30-year long career with the Swedish Paper Industry, first as a local salesman, then as the Managing Director of 3 different Sales Companies. Instead of Sanskrit and Bengali, I learnt Swedish, which I talk and write just about as fluently as French.
Although not properly a translator, I had to do a lot of translations from Swedish and English into French, and hence also devoted much of my vacant time to « translation studies » to become as proficient as ever possible on the subject, which also helped me to a large extent for my subsequent Vedantic translations.
From 1970 to 1981, then still living in Paris, I delivered 104 lectures, mostly on Indian philosophy and other aspects of the Sanâtana Dharma. I am extremely afflicted not to have been blessed by the DIVINE MOTHER to reach the sacred number of 108, but with HER help and blessings I shall try again to make it in my next life!
My professional life was very successful but in 1994, there were a many problems in my Mother Company in Sweden, because of mergers. I was chosen as the Manager for the new French Sales Company resulting from the merger, but this meant a lot of overwork and additional strain, which resulted in the stroke of hemiplegia mentioned in the § I, which left me paralysed on my left side (in the beginning of November 1994, 3 weeks exactly before my 49th birthday). In my medical ignorance, I felt pretty sure that problems with brain arteries were always more or less related to cholesterol and arteriosclerosis, and as I had never had any of these, and although a businessman had tried to have a very hygienic way of life, I felt myself somewhat well protected or immune against such problems and I did not hesitate to work more than I should have done. I really had even become what is termed in the U.S., I have heard, a « workaholic ». It was only in the hospital that the doctors explained to me that overwork, overtax and stress may as well provoke a « brain infarct » as the most commonly known « heart infarct », all the more as in my case, the « infarct » was not a thrombosis (but I do not want to indulge into too many medical details, out of the subject, and for which I do not know all the necessary technical vocabulary in English). Besides, I may have been suffering, without knowing it, of a kind of hereditary weakness of the brain arteries' walls.
As already said, prior to my stroke, I had quite an excellent typing, very rapid too and highly qualified. But it's now all gone, my left hand being almost dead, and I type with only one or two fingers of my right hand. This is why my e-mail postings take (or at least used to take?) such a long time and are (were?) often full of typing errors.
Normally, I try to read and read again chasing for these typos prior to sending e-mails. But first, there are always some typos that escape and second, it always gives me the occasion for a further digression, as new ideas are coming while reading and my messages, letters or texts use to become longer and longer with every attempt to get rid of typing errors.
But in March 2001 I bought a new computer and at the same time I invested in a speech recognition software, which works in French as well as in English and with the help of which I can now dictate my correspondence in both languages, as well as do my captivating translation work. The system runs very well and it is indeed one of the very good achievements of the information technology. And as a consequence, I do hope that a part of the above problems with typos will be eradicated in the future.
Moreover, instead of typing I can now dictate my translations or the articles I intend to write, which is quite comfortable. Now if the voice recognition software normally does not make typos, it only recognises the sounds that reach the microphone and not the words nor their meaning; the machine does not understand you but only transfers on the screen the sounds it has received, including noises from the environment, which sometimes results in other types of errors very often quite unexpected and sometimes jocular. But this is quite another story. Anyway this digression leads me smoothly to the third part of my article.
III. My interest in the IITM software :
As soon as it became obvious to me that my professional life was over and that in this respect I had become socially an invalid or an early retired person, I decided to devote all my time and efforts to the topics that had been in the centre of all my life (even if at times in the background because of my job) Sanskrit and Vedânta.
If I had started to learn some Sanskrit already when I was 15, as a fact I never went farther than some rudiments or basics and always remained a kind of eternal beginner. To be frank I had strictly no interest in learning such enlightening phrases like "Râma sees the two elephants". What I wanted was to be able to translate very accurately the few verses from the Bhagavad Gîtâ or the texts from S'rî S'ankarâcarya that I was quoting and commenting in my own lectures.
Thus I decided to start afresh my studies of the Sanskrit language in a very serious way this time; and with the development of the information technology and the Internet, there now exists very fascinating and facilitative possibilities that did not exist when I was only 15.
Moreover I have not the pretence, ambition nor conceitedness to write my Complete Works. But when preparing the already mentioned 104 lectures that I delivered in Paris, I have accumulated such a huge documentation that I have a lot of material available for writing articles on several aspects of the Sanâtana Dharma and quite especially on Vedânta and my favourite subject viz avasthâtraya vicâra.
Married in 1974, my wife and I have two sons now aged 25 and 23 who are studying and preparing themselves for the highest posts in the University. The eldest one is studying History and the youngest one Philosophy. When they have finished their studies, if my health is still permitting, and with the blessings of the DIVINE MOTHER, we intend to write all three of us a book on "some aspects of Vedânta in the XXth-century". In the meantime as they have of course quite a lot of other subjects to prioritise, I have started writing some articles based on the archives I have available here. And this is where the IITM software is proving extremely useful to me. Although I try not to overdo it with them, those articles (or a few other translations I am continuing to do on the subject and some of which might have their place in the main dissertation) often include quotations or footnotes with Sanskrit words or síloka-s. It is obvious that most Westerners cannot the Sanskrit language, but I prefer in any case to supply the Sanskrit text for some translated síloka-s so that the readers can at least recognise the words. This being the case, it is of utmost importance to cite the aforesaid quotations in diacriticised Roman transliteration. But I have decided as a personal discipline as a well as an introduction to the Sanskrit language for my sons to show the text also in devanâgarî. And in this respect the IITM software is really unparalleled. Of course in the beginning things were not very easy for me, all the more as -as far as computers are concerned- I am only an average user and not at all a specialist of the information technology. But Dr R. Kalyanakrishnan spared no effort to help me and to facilitate things for me (even at the expense of explaining very basic details that I should have known, or reminding me some other ones I had known (when starting the computerisation of my firm) but had later forgotten), and I really feel very indebted and grateful to him for all what he has done in this respect.
I came into contact with Dr Kalyanakrishnan upon suggestion of S'rî N. Krishnaswamy of Vidya Vrikshah whom I had got in touch with as to a translation of the maaNDuukyakarikaa, which is as the reader will have understood of the highest importance for me.
Thus the parts of the IITM
software that are of special and main interest to me are the ones that
refer to Sanskrit and I.P.A. transliteration. The transliteration into
other Indian languages is less primary to me although useful at times for
other purposes. As a fact I have some Hindu friends in what was until recently
West Bengal, in Kerala and also in Karnataka, and when writing to them
by now I always try to write their first names in their own languages,
Bangla, Kannada or Malayâlam. This is only a small sign of friendship:
they know I cannot their language and do not intend to learn it either.
But I shall never speak Sanskrit with anybody either at least in this life!
My purpose is not to be able to buy milk in Sanskrit (as the CD-ROMs released
last year by Samskrita Bhârati would like me to be able to do). My
very limited and egoistic aim is nothing but to try to read, understand
correctly and if possible translate accurately into French just a few jewels
of the Scriptures, of S'rî S'a.nkara's bhâshya-s and of the
Kârikâ-s. Should I succeed in doing that, it should actually
be quite enough for this life.·
mailto:guy.werlings@wanadoo.fr


--- title: Israel shot 012 date: 2004-01-13T00:00:00.000Z filepathOriginal: photos/IMG0072.jpg filepathThumbnail: photos/IMG0072.thumbnail.jpg filepathPreview: photos/IMG0072.preview.jpg ---
At Sder Boker, with the Shnatties. Back: Shtern, Toe, Dane, Nagel?, Asher. Front: me, Deutsch. In the way: Crembo!


{% extends "base.html" %} {% from "macros.html" import formfield %} {% block body_content %}
Please enter the name of your brother. If you give his mobile number we'll text him to say he is being sued. That way you don't have to.


com.brightcove.commons.catalog.objects
Classes
CuePoint
CustomField
Image
iosRendition
Playlist
Playlists
Rendition
Video
Videos