{"id":28276565,"url":"https://github.com/lxieyang/caen-connect-tutorial","last_synced_at":"2026-01-26T17:35:38.192Z","repository":{"id":147194247,"uuid":"80368104","full_name":"lxieyang/caen-connect-tutorial","owner":"lxieyang","description":"A brief description on how to sync your local project folder to CAEN machines, (so that you could do stuff only CAEN can do, etc.)","archived":false,"fork":false,"pushed_at":"2017-02-01T06:01:37.000Z","size":603,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-17T23:38:06.378Z","etag":null,"topics":["caen","michigan","sftp","sublime-text","tutorial"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lxieyang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-01-29T19:47:57.000Z","updated_at":"2017-05-26T05:46:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"ccd87b88-560a-4dfc-b358-cf50e1f2ebcf","html_url":"https://github.com/lxieyang/caen-connect-tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lxieyang/caen-connect-tutorial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxieyang%2Fcaen-connect-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxieyang%2Fcaen-connect-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxieyang%2Fcaen-connect-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxieyang%2Fcaen-connect-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lxieyang","download_url":"https://codeload.github.com/lxieyang/caen-connect-tutorial/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxieyang%2Fcaen-connect-tutorial/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28783028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["caen","michigan","sftp","sublime-text","tutorial"],"created_at":"2025-05-21T05:10:48.600Z","updated_at":"2026-01-26T17:35:38.187Z","avatar_url":"https://github.com/lxieyang.png","language":null,"readme":"# CAEN-Connect-Tutorial\n\n***NOTE: BEFORE you read the rest of the tutorial, MAKE SURE that you are a student attending the University of Michigan, Ann Arbor (preferably a College of Engineering student). Though this tutorial may also apply to other similar situations, it will be your responbility to learn to adapt. Cheers =P***\n\n![umich](./pic/umich.png)\n\n## Introduction\n\n**caen-connect-tutorial** walks through with you the way to sync your local project folder to your remote CAEN (Linux) machine **instantly** using **SFTP**, so you could ssh into CAEN, and do the stuff that you want CAEN to do. \n\n## Possible Cases of Usage\n\nPossible scenarios of use including:\n\n- You are sitting in your dorm, developing your EECS484 project 01/02/03/04, and you want to develop **locally** using you favorite text editor (let's say [sublime text](https://www.sublimetext.com)) due to its reach functionality in auto-completion, syntax highlighting, auto-correction, auto-write-the-whole-project-so-I-could-just-sit-there-and-do-nothing, etc. But, sadly, you can only run your code on CAEN since only CAEN can run ***sqlplus***. You are too lazy to get out of the couch, go to duder/BBB and get a CAEN machine, and start working. But you have to get your code there. Shoot!\n- You are, again, writing your C++ code for EECS281/482/483/4xx projects **locally**. At the end of the spec, the instructor want you to run your code in this specific version of ***g++*** (let's say 4.8.5) on a Linux machine (possibly using some Linux system calls so a Mac/PC is simply not going to get you there). But you don't have Linux installed locally. Even if you do, you find that the **g++** version is 5.1.5 and there is no way for you to downgrade it. ONLY CAEN runs **g++** 4.8.5. Shoot!\n- You have a remote Linux machine that is so so so powerful, why installing my own Linux? But how do I get my code up there? Shoot!\n\n## Make It Happen\n\nNow, to make this happen, all you need is a [sublime text](https://www.sublimetext.com) editor (More text editor options are to come as soon as I figure them out).\n\n![sublime](./pic/sublime.png)\n\n#### Some Preparations\n1. Go ahead to [www.sublimetext.com](https://www.sublimetext.com) to get the latest version of sublime text installed on your machine (Mac/PC/Linux). Note that it doesn't matter whether you install version 2 or 3. They all works. (Skip if you already have done it in the past.)\n2. Install **Package Control**. [Here](https://packagecontrol.io/installation)'s how you could do it, or you could google it by yourself. (Skip if you already have done it in the past.)\n3. Hit `Cmd-Shift-P` if you are working on a Mac (`Ctrl-Shift-P` on PC) to open up the prompt. Type `Install Package` and hit `Enter`. In the next prompt, type **`SFTP`** and hit `Enter`. The installation will perform automatically. Restart your editor after this.\n\n#### Real Magic\n1. **Configurations**\n\n\tOpen up your **root/parent project directory** (where you put all your project folders for this course) and create a new json file named **`sftp-config.json`**. Open it up, and copy-paste in the following code:\n\n\t```json\n\t{    \n\t    \"type\": \"sftp\",\n\t\n\t    \"save_before_upload\": true,\n\t    \"upload_on_save\": true,\n\t    \"sync_down_on_open\": false,\n\t    \"sync_skip_deletes\": false,\n\t    \"sync_same_age\": true,\n\t    \"confirm_downloads\": false,\n\t    \"confirm_sync\": true,\n\t    \"confirm_overwrite_newer\": false,\n\t    \n\t    \"host\": \"login.engin.umich.edu\",\n\t    \"user\": \"your-uniqname\",\n\t    \"password\": \"your-password\",\n\t    \n\t    \"remote_path\": \"/afs/umich.edu/user/l/x/your-uniqname/path/to/your/project/folder\",\n\t    \"ignore_regexes\": [\n\t        \"\\\\.sublime-(project|workspace)\", \"sftp-config(-alt\\\\d?)?\\\\.json\",\n\t        \"sftp-config(-alt\\\\d?)?\\\\.example.json\",\n\t        \"sftp-settings\\\\.json\", \"/venv/\", \"\\\\.svn/\", \"\\\\.hg/\", \"\\\\.git/\",\n\t        \"\\\\.bzr\", \"_darcs\", \"CVS\", \"\\\\.DS_Store\", \"Thumbs\\\\.db\", \"desktop\\\\.ini\"\n\t    ],\n\t\n\t    \"connect_timeout\": 30,\n\t}\n\t```\n\tThen, change all instances of `your-uniqname`s to your actual **uniqname**, change all instances of `your-password` to your **CAEN password**, change all instances of `path/to/your/project/folder` to where you want to put your project on CAEN. Now, go ahead and save it.\n\t\t\n\tA sample config file can also be found here: [sftp-config.example.json](./sftp-config.example.json)\n\t\n\tTo explain a bit:\n\t\u003e `upload_on_save` will automatically upload the entire root/parent project folder to CAEN.\n\t\n\t\u003e `user` specifies whose CAEN account to upload your project to\n\t\n\t\u003e `password` specifies your password to CAEN\n\t\n\t\u003e `remote_path` specifies where your project folder is located on CAEN\n\t\n\t\u003e More configurations could be found here: [Sublime SFTP Settings](https://wbond.net/sublime_packages/sftp/settings#Settings)\n\n2. **Upload on save**\n\n\tNow, congratulations! You are almost there! Open up your root/parent project directory in sublime text. Actually create a project folder to hold all your project files (let's say `eecs484-project-01`). Change directory into it, create a file in it, do some edits, and click **File =\u003e Save** (or **`Cmd-S`** in Mac). This will automatically upload the file you just created to CAEN. Automatically. Automatically. ***(No need to email yourself the code and download it from CAEN / push your code to github and pull it on CAEN / copy your file into a flash drive and stick it onto a CAEN machine / etc)***.\n\n3. **Sync Local -\u003e Remote** \n\t\n\tNote that `upload_on_save` will dumbly upload each file you saved to CAEN. But if you delete it / rename it locally, the version on CAEN persists. This may cause serious problems like ***multiple includes, naming conflict, etc***. To save, you could use the **Sync** functionality of **Sublime SFTP**. To do this: **Right click** on your project folder, select **SFTP/FTP** =\u003e **Sync Local -\u003e Remote**. It's illustrated below:\n\t![sync](./pic/sync.jpg)\n\tGo ahead and select `Yes` when asked for confirmation. This syncs the local folder with the remote one on CAEN, meaning, everything in your project folder on CAEN machine is now **identical** to the ones in your local project folder. Yay!\n\t\n4. **Run your project on CAEN**\n\n\tNow is the time you **ssh**(remote log in) onto CAEN Linux and run your porjects! To remote log in your CAEN Linux account, please type the following script into your terminal:\n\t\n\t```sh\n\tssh your-uniqname@login-course.engin.umich.edu\n\t```\n\t\n\tPlease change `your-uniqname` to your actual **uniqname**. I assume you could take it from here =P\n\t\n5. **Other possibilities**\n\n\tNote that there are other possibilities to explore with ***Sublime SFTP***. What I gave you is just the **[MVP](https://en.wikipedia.org/wiki/Minimum_viable_product)**, so you could get going on the rest of your journey.\n\t\n\n## Things to Keep in Mind\n\n#### Version Control\nPlease do not forget to do version controls, such as [git](https://en.wikipedia.org/wiki/Git), when working with SFTP. Somewhere down the line, when you accidently chose to ***Sync Remote -\u003e Local*** or whatever operations that completely messes up / wipes out your local **repo** (notice that I use the word **repo** here, and you should know what I mean by that), **git** will save you. ***Please refrain from any impulse to curse me if you don't have your project git-ted. I told you to git it. I told you.***\n\nWhen using git, please add `sftp-config.json` to your `.gitignore` file before you commit to a remote repository ***(you don't want to expose your password to other folks right?)***. \n\n#### Your ideas?\nPlease shoot me an [email](mailto:lxieyang@umich.edu) to remind me of anything you can think of that should be kept in mind when using SFTP. I would update this tutorial regularly and rest assured your contribution will be referenced and highlighted. I truly appreciate your effort in helping more folks live their life more easily.\n\n## Quick Start\nTo practice before messing up with your code/projects, you could:\n\n- Instal Sublime Text\n- Install Package Control\n- Clone this repo, and change the filename `sftp-config.example.json` to `sftp-config.json`. Modify its content according to the instructions above.\n- **Git** the folder!\n- Play with the stuff in `sample-project` on CAEN! Best wishes!\n\n\n## Contributors\n- Special thanks to **Joshua Agby** for:\n\t- pointting out that the name of the plugin is actually `SFTP` instead of `Sublime SFTP`. So please type `SFTP` when searching for the plugin in your package control.\n\t- providing an alternative `remote_path` in case of the `Folder does not exist` error, which is `/your-uniqname/path/to/your/project/folder`.\n\n## About\nI created this tutorial when I was TAing **EECS484 Database Management Systems** at the University of Michigan, Ann Arbor. I would expect less situations where we helped you modify the code and you want to run it right afterwards, so you ~~email the latest version to yourself, log into CAEN using VNC, open up a browser, download it, put into the right directory, and then~~ run it.\n\nThanks for putting up with my ***crappy non-native*** English. Hope this could somehow make your life easier. \n\nBest,\n\n[Xieyang](http://lxieyang.github.io)\n\nLast updated: 02/01/2017 00:46:49 EST\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flxieyang%2Fcaen-connect-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flxieyang%2Fcaen-connect-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flxieyang%2Fcaen-connect-tutorial/lists"}