Introduction
Chicken Caesar Salad
A classic plate in everywhere. It’s delicious, easy and quick to made. No doubt that it has to be a fundamental in your repertoire. Unlock the next level adding chicken! Enjoy it.
Letucce
150 g.
Chicken breast
One piece
Parmesan
One cup
Garlic
One piece
Lemon juice
10 ml.
Water
10 ml.
Salt
10g
Steps
In a bowl, pour a couple of tablespoons of olive oil, a minced clove of garlic and a pinch of salt. Stir and pour this dressing over the pieces of bread so that they are well impregnated.
Cook the grilled chicken with a pinch of salt in a pan with a little olive oil. Once it is cooked cut it into pieces or strips, as you prefer. Wash the lettuce and cut in pieces. Place it in your salad bowl.
Add half the chicken pieces, half the indicated amount of the grated Parmesan cheese and the pieces of bread. Pour half of the dressing you have prepared and mix gently.
Finish adding the other half of the ingredients and the rest of the dissing to the salad. Serve at the tabe and enjoy your salad!


We're sorry but weekly doesn't work properly without JavaScript enabled. Please enable it to continue.
One
Two
Three
Four
Five
Six


{{Infobox prepared food | name = Marble cake | image = | caption = | alternate_name = | country = Germany | region = | creator = | course = | type = Cake | served = | main_ingredient = Light and dark batter | variations = | calories = | other = }}
A marble cake is a cake with a streaked or mottled appearance (like marble) achieved by very lightly blending light and dark batter.<ref>{{cite web |first=Lynne |last=Olver |date=10 May 2009 |title=Marble cake |url=http://www.foodtimeline.org/foodcakes.html#marble |work=Cake History Notes |accessdate=20 May 2009}}</ref> It can be a mixture of vanilla and chocolate cake, in which case it is mainly vanilla, with streaks of chocolate. Other possibilities are strawberry or other fruit flavors, or (particularly in marbled coffee cakes) cinnamon and/or other spices.
The first print references to marble cake begin appearing in the last quarter of the 19th century. One popular variation of this recipe during Victorian times was “Harlequin cake,” <ref>Oliver, Lynne. "Marble Cake." Food Timeline. N.p., 1999. Web. http://www.foodtimeline.org/foodcakes.html#marble</ref> which was baked with checkerboard patterns. Early recipes used molasses and spices to achieve the dark-colored batter.<ref>Oxford Encyclopedia of Food and Drink in America, Andrew F. Smith editor [Oxford University Press:New York] 2004, Volume 1 (p. 162)</ref>
{{Reflist}}
{{Cakes}}
{{dessert-stub}}


I was originally going to put the pos here. Now that I think about it, the pos I want to design will require a
full page. So now it will be in its own separate component. Question is, what should be placed here instead?
Maybe recent documents, or some other sort of meta data.


Refer friends & family to ShopSasta. You will get % cashback every time your referral place their order.
**You can use your referral earnings anytime when you place the order


We can’t connect to the server at localhost.
has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.
has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.
This website might not support the TLS 1.2 protocol, which is the minimum version supported by Firefox. Enabling TLS 1.0 and TLS 1.1 might allow this connection to succeed.
TLS 1.0 and TLS 1.1 will be permanently disabled in a future release.
It looks like your network security settings might be causing this. Do you want the default settings to be restored?


--- ---
Let's improve our documentation!
Cultural? Scientific? Technical? Civic?
All valid & important! While this project grows out of software documentation, the tools, practices, and goals of various types of documentation have overlap and folks can learn a great deal from working together in an interdisciplinary setting.
Let's take a day to focus on improving our documentation.
Find out when details are announced:
Anyone working to improve the documentation for their project, creating tools for documentation, or folks interested in helping out and learning more about what it takes to write docs.
Docs Parties are more like a work party than hangout and socialize party (though that's a part of it too! Minus the booze!)
We'll spend most of a day writing and editing documentation. We'll provide lunch, drinks, and snacks so you and your team can focus on improving your docs.
At the end of the day we'll invite groups to give lightning talks about their projects and what they accomplished over the day.
Civic and government technology need better documentation. Just knowing what city services exist can be a big challenge that can be addressed through documentation.
It's easy to share code. It's not easy to share how to use it. We need great documentation for users of software to be effective.
How is scientific data shared and how might it be documented in ways to make it more accessible?
How might community organizations better document their processes, policies, and activities? Help make your community more effective by producing clear documentation.
It's important that this project contributes to a friendly, safe, and welcoming environment for all, particularly for folks that are historically underrepresented in technology.
Support the production of quality documentation and help to build a documentation-focused community by sponsoring Docs Party! We need help covering space, food, and other costs of running the event.
As a sponsor, you'll get:
Find out when details are announced:


Sunday Morning: Nov. 24, 2019; Helen Ford Wallace
by Helen Ford WallaceUNIQUE EVENING
Awards dinner: The 13th annual Paseo Arts Awards Dinner was held at the Skirvin Hilton Hotel. Members of the Paseo Arts Association were hosts. The artists who were winners and those in attendance fulfilled the vision statement of the PAA: to enrich, educate and inspire the public through the arts. Entertainment, a poem reading, the creative centerpieces and the awards themselves added artistic touches to the evening. Lance McDaniel was master of ceremonies. Amanda Bleakley is executive director of the PAA.
Award winners: Winners were Lucas Simmons, Emerging Artist Award; John Wolfe, Michi Susan Award; Ken Fergeson, Volunteer Service Award; Denise Duong, Artist of the Year Award; and Benjamin Harjo jr., Lifetime Achievement Award.
Other events: During the year, the PAA hosts monthly First Friday Gallery Walks, the Paseo Arts Festival, the Paseo Art Space, Fair Ball, Magic Lantern and the Paseo FEAST.
OSU SOIREE
Dinner/concert: The McKnight Center for the Performing Arts at Oklahoma State University in Stillwater had dinner and a concert featuring Artistic Director and pianist Anne-Marie McDermott. It was part of the third Chamber Music Festival, a series of intimate performances by musical artists. Dinner, cocktails and the concert were on the Performance Hall stage. About 130 guests attended the soiree.
Food/decor: Salmon and beef and bacon Wellington was served and dress code was cocktail attire with a “splash of the brightest orange in America,” according to a press release.
Music: The St. Lawrence String Quartet played.
ARTIST RECEPTION
Reception: The First Friday art walk and opening reception at JRB Art at the Elms in the Paseo Arts District featured three artists: Katherine Kerr Allen mixed media paintings; George Oswalt’s large realistic oil paintings; and Karam’s heavily textured three-dimensional works.
Flowers/food: Cattleya orchids decorated the gallery and appetizers were provided by Qdoba Restaurant and Picasso Cafe.
On the party list: Guests included Mark White, Francesca Giani, Zeb Gautreaux, Nancy Anthony, Alyce Page, Ron Page, Candy Yaun, Breene Kerr Jr., Helen Dailey, Pat Dailey, Erin Cooper, Tim Cooper, Alan Atkinson, Miles Mixon, David Allen, Sally Bentley, Kenyon Morgan, Ralf Janknecht, Sheridan Conrad, Lisa Woltman, Kelley Barnes, Fahd Sultan and Jennifer Song.
CELEBRATING 90 YEARSCelebration: Alice Musser was honored at a 90th birthday celebration for her in Edmond. The party, hosted by Musser's five children, included a cake highlighting her love of crossword puzzles and a trivia game featuring events from 1929, the year of her birth. Among those in attendance were many friends from the Edmond and Oklahoma City area and relatives from six states. Musser is a former state legislator for District 91 in south Oklahoma City.
SCULPTURE EXTRA!
Who/what: Joe Slack, Oklahoma City artist, has created a relief metal sculpture of 120 metal-cut figures between 48 and 84 inches tall. The piece is called “Birds Watching OKC Lightning Thunder Dance Party.”
Where/why/how: The sculpture is 640 foot long piece and will be on the median wall on Classen Boulevard between 7th and 9th streets. It was commissioned by OKC Beautiful for its 50th anniversary. The reveal for the sculpture was held Wednesday. The artist has multiple public pieces in Oklahoma City, Edmond, Norman and Altus.
Related Photos


Interactive SQL is built to promote tinkering.
I recall struggling with the SQL queries when I took the DBMS course. As the labs progressed and the queries got more complicated, I started doubting the correctness of my queries. Knowing either way would have helped me realize my misconceptions. After taking the db-class course, and seeing their use of RA workbenches, I had cues on how to solve this problem. I talked about this to Professor PM Jat, and he was very supportive of the idea.
While we realize this is pretty basic, we hope that you find it useful. You can write down the issues with the system at my github repository. InteractiveSQL is open-source, but not quite ready for others to jump in the development fray. This would change on the next bump to the version number, which I hope will happen soon.
Stack: We are using psql 8.3.11 (PostgreSQL) for executing SQL queries. The Relational Algebra queries are translated into PostgreSQL using RA interpreter (developed by Prof. Jun Yang at Duke University). All the nice styling is due to Twitter Bootstrap. The horrible color choices are mine.


A FISH CALLED WANDA A film review by Mark R. Leeper Copyright 1988 Mark R. Leeper
Capsule review: Very funny, well-written crime story/comedy combines the story-telling of the old Ealing comedies with the pace and outrageousness of FAWLTY TOWERS. This film makes one long for the days of better films by better writers. We don't see many like this any more. Rating: high +2.
I got complaints recently on my review of MIDNIGHT RUN. I only mildly liked a comedy-adventure in which you got to know somewhat two conflicting character types, set on the background of a sort of race across country that included cars chasing cars, helicopters cars, and double crosses. Now, eight days later, I see an English comedy-adventure, A FISH CALLED WANDA. It too has chases, conflicting personalities, and double crosses, but the poor British cannot afford to blow up helicopters and crash cars, so they economize by getting good writers who can really write dialogue and create characters, and at the same time be funny and tell a good story that keeps an audience guessing how things are all going to turn out. In short, A FISH CALLED WANDA is not only a film that does things right, it is a film that does some things astoundingly right.
The film begins with a mismatched set of crooks pulling off a jewel heist. There are two English brothers (played by Michael Palin and Tom Georgeson) and an American brother and sister, Otto and Wanda (played by Kevin Kline and Jamie Lee Curtis). The jewels are just barely stowed away when the first double cross happens. The second double cross is only a short time after.  Soon into the fray comes barrister Archie Leach (does that name sound familiar?), played by John Cleese. Wanda wants to use Leach against the English brothers, but Otto's basic anti-British prejudice starts fouling things up.
A FISH CALLED WANDA was written by John Cleese and directed by Charles Crichton (who directed great British comedies like THE LAVENDER HILL MOB). It was based on a story by Cleese Crichton. With that background, it is not surprising that it has a feel of FAWLTY TOWERS combined with MONTY PYTHON crossed with old Ealing Studios comedy. A FISH CALLED WANDA has good three-dimensional characters, has a good story, and is very funny at the same time. Rate it a high +2 on the -4 to +4 scale.
Mark R. Leeper att!mtgzz!leeper<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Share independently usable packages of code for teams to achieve a variety of capabilities in their systems.


|
My Project
|
The ARSAL library in an abstraction layer use by almost all others ARSDK libraries.
It provides abstraction of multiple common functions.
Here is a list and a short description of all libARSAL submodules:
This submodule defines different functions used to convert endianness. The reference endian is the ARM-Little endian, as it is the endian used on all products developped around the ARSDK.
The function are named in a way similar to the htons/htonl/ntohs/ntohl, but use the letter 'd' (for device) instead of 'n' (for network).
This submodule includes functions to convert short int (htods, dtohs), long int (htodl, dtohl), long long int (htodll, dtohll), float (htodf, dtohf) and double (htodd, dtohd)
This submodule defines mutexes and conditionnal variables structures.
Synchronization structures are created using an init function (ARSAL_Mutex_Init, ARSAL_Cond_Init), and must be destroyed using their destroy functions (ARSAL_Mutex_Destroy, ARSAL_Cond_Destroy) when no longer used.
The mutexes and conditionnal variables API is based on the POSIX API.
This submodule provides the ARSAL_PRINT macro, which is a simple log function. This function prints the message in an easy to parse way, including a timestamp, a user defined TAG, and a log level.
Debug (ARSAL_PRINT_DEBUG) and Warning (ARSAL_PRINT_WARNING) logs are added to the standard output (stdout), while Error (ARSAL_PRINT_ERROR) logs are added to the error outptut (stderr). Debug messages are not shown on release builds.
This behavior can change on specific operating systems. (On Android, all ARSAL_PRINT calls outputs the messages to the Logcat)
This submodule defines semaphores structures.
The semaphores are created using the ARSAL_Sem_Init function, and must be destroyed using ARSAL_Sem_Destroy function when no longer used.
The semaphore API is based on the POSIX semaphore API, and can be found in the file ARSAL_Sem.h
This submodule defines wrapper functions around the POSIX Socket API.
Sockets are created using ARSAL_Socket_Create and destroyed using ARSAL_Socket_Close.
This submodule defines a thread API based on the POSIX-Pthread API.
This submodule defines many time related functions.
The TIMEVAL_TO_TIMESPEC and TIMESPEC_TO_TIMEVAL macros are used to convert time holding structures from one to another.
The others functions are helpers around time comparaison and delta calculations.
This submodule defines ftw/nftw like functions to recursively descends the directory hierarchy
While this library is merely a POSIX wrapper on most platforms, its internal data types should NOT be used directly with POSIX functions. The same restriction apply to POSIX data types used as ARSAL parameters.
The POSIX <-> ARSAL binary compatibility is NOT guaranteed, and may change on any platform, even on a Unix-like, full POSIX-compliant platform.
One such example of POSIX <-> ARSAL incompatibility is the iOS implementation of the ARSAL_Sem_t semaphores. As the iOS POSIX implementation is not complete, the ARSAL_Sem_t semaphore had to be coded using other APIs to create the same features as the original POSIX semaphores.


|
| static AudioSource | PlaySound (AudioClip clip) |
| | Play the specified audio clip. More...
|
| |
| static AudioSource | PlaySound (AudioClip clip, float volume) |
| | Play the specified audio clip with the specified volume. More...
|
| |
| static AudioSource | PlaySound (AudioClip clip, float volume, float pitch) |
| | Play the specified audio clip with the specified volume and pitch. More...
|
| |
| static int | RandomRange (int min, int max) |
| | New WWW call can fail if the crossdomain policy doesn't check out. More...
|
| |
| static string | GetHierarchy (GameObject obj) |
| | Returns the hierarchy of the object in a human-readable format. More...
|
| |
| static T[] | FindActive< T > () |
| | Find all active objects of specified type. More...
|
| |
| static Camera | FindCameraForLayer (int layer) |
| | Find the camera responsible for drawing the objects on the specified layer. More...
|
| |
| static void | AddWidgetCollider (GameObject go) |
| | Add a collider to the game object containing one or more widgets. More...
|
| |
| static void | AddWidgetCollider (GameObject go, bool considerInactive) |
| | Add a collider to the game object containing one or more widgets. More...
|
| |
| static void | UpdateWidgetCollider (GameObject go) |
| | Adjust the widget's collider based on the depth of the widgets, as well as the widget's dimensions. More...
|
| |
| static void | UpdateWidgetCollider (GameObject go, bool considerInactive) |
| | Adjust the widget's collider based on the depth of the widgets, as well as the widget's dimensions. More...
|
| |
| static void | UpdateWidgetCollider (BoxCollider box, bool considerInactive) |
| | Adjust the widget's collider based on the depth of the widgets, as well as the widget's dimensions. More...
|
| |
| static void | UpdateWidgetCollider (BoxCollider2D box, bool considerInactive) |
| | Adjust the widget's collider based on the depth of the widgets, as well as the widget's dimensions. More...
|
| |
| static string | GetTypeName< T > () |
| | Helper function that returns the string name of the type. More...
|
| |
| static string | GetTypeName (UnityEngine.Object obj) |
| | Helper function that returns the string name of the type. More...
|
| |
| static void | RegisterUndo (UnityEngine.Object obj, string name) |
| | Convenience method that works without warnings in both Unity 3 and 4. More...
|
| |
| static void | SetDirty (UnityEngine.Object obj) |
| | Convenience function that marks the specified object as dirty in the Unity Editor. More...
|
| |
| static GameObject | AddChild (GameObject parent) |
| | Add a new child game object. More...
|
| |
| static GameObject | AddChild (GameObject parent, bool undo) |
| | Add a new child game object. More...
|
| |
| static GameObject | AddChild (GameObject parent, GameObject prefab) |
| | Instantiate an object and add it to the specified parent. More...
|
| |
| static int | CalculateRaycastDepth (GameObject go) |
| | Calculate the game object's depth based on the widgets within, and also taking panel depth into consideration. More...
|
| |
| static int | CalculateNextDepth (GameObject go) |
| | Gathers all widgets and calculates the depth for the next widget. More...
|
| |
| static int | CalculateNextDepth (GameObject go, bool ignoreChildrenWithColliders) |
| | Gathers all widgets and calculates the depth for the next widget. More...
|
| |
| static int | AdjustDepth (GameObject go, int adjustment) |
| | Adjust the widgets' depth by the specified value. More...
|
| |
| static void | BringForward (GameObject go) |
| | Bring all of the widgets on the specified object forward. More...
|
| |
| static void | PushBack (GameObject go) |
| | Push all of the widgets on the specified object back, making them appear behind everything else. More...
|
| |
| static void | NormalizeDepths () |
| | Normalize the depths of all the widgets and panels in the scene, making them start from 0 and remain in order. More...
|
| |
| static void | NormalizeWidgetDepths () |
| | Normalize the depths of all the widgets in the scene, making them start from 0 and remain in order. More...
|
| |
| static void | NormalizeWidgetDepths (GameObject go) |
| | Normalize the depths of all the widgets in the scene, making them start from 0 and remain in order. More...
|
| |
| static void | NormalizeWidgetDepths (UIWidget[] list) |
| | Normalize the depths of all the widgets in the scene, making them start from 0 and remain in order. More...
|
| |
| static void | NormalizePanelDepths () |
| | Normalize the depths of all the panels in the scene, making them start from 0 and remain in order. More...
|
| |
| static UIPanel | CreateUI (bool advanced3D) |
| | Create a new UI. More...
|
| |
| static UIPanel | CreateUI (bool advanced3D, int layer) |
| | Create a new UI. More...
|
| |
| static UIPanel | CreateUI (Transform trans, bool advanced3D, int layer) |
| | Create a new UI. More...
|
| |
| static void | SetChildLayer (Transform t, int layer) |
| | Helper function that recursively sets all children with widgets' game objects layers to the specified value. More...
|
| |
| static T | AddChild< T > (GameObject parent) |
| | Add a child object to the specified parent and attaches the specified script to it. More...
|
| |
| static T | AddChild< T > (GameObject parent, bool undo) |
| | Add a child object to the specified parent and attaches the specified script to it. More...
|
| |
| static T | AddWidget< T > (GameObject go) |
| | Add a new widget of specified type. More...
|
| |
| static T | AddWidget< T > (GameObject go, int depth) |
| | Add a new widget of specified type. More...
|
| |
| static UISprite | AddSprite (GameObject go, UIAtlas atlas, string spriteName) |
| | Add a sprite appropriate for the specified atlas sprite. More...
|
| |
| static GameObject | GetRoot (GameObject go) |
| | Get the rootmost object of the specified game object. More...
|
| |
| static T | FindInParents< T > (GameObject go) |
| | Finds the specified component on the game object or one of its parents. More...
|
| |
| static T | FindInParents< T > (Transform trans) |
| | Finds the specified component on the game object or one of its parents. More...
|
| |
| static void | Destroy (UnityEngine.Object obj) |
| | Destroy the specified object, immediately if in edit mode. More...
|
| |
| static void | DestroyImmediate (UnityEngine.Object obj) |
| | Destroy the specified object immediately, unless not in the editor, in which case the regular Destroy is used instead. More...
|
| |
| static void | Broadcast (string funcName) |
| | Call the specified function on all objects in the scene. More...
|
| |
| static void | Broadcast (string funcName, object param) |
| | Call the specified function on all objects in the scene. More...
|
| |
| static bool | IsChild (Transform parent, Transform child) |
| | Determines whether the 'parent' contains a 'child' in its hierarchy. More...
|
| |
| static void | SetActive (GameObject go, bool state) |
| | SetActiveRecursively enables children before parents. More...
|
| |
| static void | SetActive (GameObject go, bool state, bool compatibilityMode) |
| | SetActiveRecursively enables children before parents. More...
|
| |
| static void | SetActiveChildren (GameObject go, bool state) |
| | Activate or deactivate children of the specified game object without changing the active state of the object itself. More...
|
| |
| static bool | IsActive (Behaviour mb) |
| | Helper function that returns whether the specified MonoBehaviour is active. More...
|
| |
| static bool | GetActive (Behaviour mb) |
| | Helper function that returns whether the specified MonoBehaviour is active. More...
|
| |
| static bool | GetActive (GameObject go) |
| | Unity4 has changed GameObject.active to GameObject.activeself. More...
|
| |
| static void | SetActiveSelf (GameObject go, bool state) |
| | Unity4 has changed GameObject.active to GameObject.SetActive. More...
|
| |
| static void | SetLayer (GameObject go, int layer) |
| | Recursively set the game object's layer. More...
|
| |
| static Vector3 | Round (Vector3 v) |
| | Helper function used to make the vector use integer numbers. More...
|
| |
| static void | MakePixelPerfect (Transform t) |
| | Make the specified selection pixel-perfect. More...
|
| |
| static bool | Save (string fileName, byte[] bytes) |
| | Save the specified binary data into the specified file. More...
|
| |
| static byte[] | Load (string fileName) |
| | Load all binary data from the specified file. More...
|
| |
| static Color | ApplyPMA (Color c) |
| | Pre-multiply shaders result in a black outline if this operation is done in the shader. More...
|
| |
| static void | MarkParentAsChanged (GameObject go) |
| | Inform all widgets underneath the specified object that the parent has changed. More...
|
| |
| static string | EncodeColor (Color c) |
| |
| static Color | ParseColor (string text, int offset) |
| |
| static string | StripSymbols (string text) |
| |
| static T | AddMissingComponent< T > (this GameObject go) |
| | Extension for the game object that checks to see if the component already exists before adding a new one. More...
|
| |
| static Vector3[] | GetSides (this Camera cam) |
| | Get sides relative to the specified camera. More...
|
| |
| static Vector3[] | GetSides (this Camera cam, float depth) |
| | Get sides relative to the specified camera. More...
|
| |
| static Vector3[] | GetSides (this Camera cam, Transform relativeTo) |
| | Get sides relative to the specified camera. More...
|
| |
| static Vector3[] | GetSides (this Camera cam, float depth, Transform relativeTo) |
| | Get sides relative to the specified camera. More...
|
| |
| static Vector3[] | GetWorldCorners (this Camera cam) |
| | Get the camera's world-space corners. More...
|
| |
| static Vector3[] | GetWorldCorners (this Camera cam, float depth) |
| | Get the camera's world-space corners. More...
|
| |
| static Vector3[] | GetWorldCorners (this Camera cam, Transform relativeTo) |
| | Get the camera's world-space corners. More...
|
| |
| static Vector3[] | GetWorldCorners (this Camera cam, float depth, Transform relativeTo) |
| | Get the camera's world-space corners. More...
|
| |
| static string | GetFuncName (object obj, string method) |
| | Convenience function that converts Class + Function combo into Class.Function representation. More...
|
| |
| static void | Execute< T > (GameObject go, string funcName) |
| | Execute the specified function on the target game object. More...
|
| |
| static void | ExecuteAll< T > (GameObject root, string funcName) |
| | Execute the specified function on the target game object and all of its children. More...
|
| |
| static void | ImmediatelyCreateDrawCalls (GameObject root) |
| | Immediately start, update, and create all the draw calls from newly instantiated UI. More...
|
| |


Polkadot vs Cosmos This discussion is intended to promote discussion and understanding of the differences between the projects. There is probably much about about Polkadot that I don’t understand well. For me, I helped @jaekwon and @ebuchman peer review the Cosmos design ba...


NeuroTechVan’s mission is to be a catalyst for innovation in the field of neural technology. We are connecting Vancouver’s neural enthusiasts with our international NeuralTechX community (Join our Slack Channel!).
Regardless if you are an mind hacking expert or neural newbie, everybody is welcome. We have a rich collaborative culture and we work together on our projects. We believe that an open environment is one that fosters intense creativity and innovation. So whether it’s helping people become telekinetic cyborgs, curing brain disease, or if you just want to work on your whacky neuroinformatics algorithm, we invite you to come and join us at one of our weekly hack nights and unleash your inner neuronaut!
Our current chapter initiative, the OpenFNIR project, aims to democratize the field of neural science by using cutting edge physics to create open sourced brain imaging devices that make meaningful neural experiments accessible to everyday hackers. Come and help us! Let’s think about thinking together.
Members
Events
Followers
Projects
Ideas
NeurotechVAN organizes many events such as meetups, technical workshops, hackathons, and brain-driven live performances and art events. We also provide innovation-focused talks and demos in schools and companies.
Heads up to new challenges, great ideas and rewards!
Connect with researchers, professionals, entrepreneurs and tech enthusiasts. Get the right resources to innovate!
Get bottom-up knowledge from the source to get your skills to a new level!
Explore, collaborate and push the limit of neurotechnology!
We hold events regularly, from weekly hack nights, to social meetups and hackathons.
Join us at our events!
We are open to everyone,no matter their levels of expertise, and we would love to hear from you.
We are also part of an international network spread across the globe with our own Hackathons, Meetups,and Conferences organized at a larger scale.
Join the ConversationFeel free to contact us to provide feedback, share ideas, or to just say hello!
Our current endeavors wouldn't have been possible without the support of our partners and sponsors:
Let's be Partners


|
Ising_OPV
v4.0.2
Generates and analyzes model bulk heterojunction morphologies in a parallel computing environment
|
Classes | |
| struct | Coords |
| This namespace provides useful constants and utility functions. More... | |
| class | Lattice |
| This class contains the properties of a three-dimensional lattice and the functions needed to interact with it. More... | |
| class | Morphology |
| This class contains a lattice representation of a materials blend with the ability to simulate phase separation and perform a variety of structural analyses. More... | |
| class | Parameters |
| This class contains the parameters used by Ising_OPV and functions to import parameter files. More... | |
| class | Version |
| This class contains the current version information and version comparison operators. More... | |
Functions | |
| std::vector< std::pair< double, double > > | calculateCumulativeHist (const std::vector< std::pair< double, double >> &data) |
| Calculates the cumulative histogram from the input probability histogram data. More... | |
| std::vector< std::pair< double, int > > | calculateHist (const std::vector< int > &data, int bin_size) |
| Calculates the histogram for the input integer data vector using the input bin size. More... | |
| std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< std::pair< double, int >> hist) |
| Calculates the probability histogram for the input histogram data vector. The function outputs bin-centered x values and probability y values in a x-y pair vector. More... | |
| std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< int > &data, int bin_size) |
| Calculates the probability histogram for the input integer data vector using the input bin size. More... | |
| std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< double > &data, int num_bins) |
| Calculates the probability histogram for the input double data vector using the input number of bins. More... | |
| std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< double > &data, double bin_size) |
| Calculates the probability histogram for the input data vector using the input bin size. More... | |
| std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< double > &data, const double bin_size, const int num_bins) |
| Calculates the probability histogram for the input data vector using the input bin size and input number of bins. More... | |
| std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< double > &data, const double bin_start, const double bin_size) |
| Calculates the probability histogram for the input data vector using the input bin start value and bin size. More... | |
| double | integrateData (const std::vector< std::pair< double, double >> &data) |
| Numerically integrates a vector of x-y data using the trapezoid rule. More... | |
| double | interpolateData (const std::vector< std::pair< double, double >> &data, const double x_val) |
| Linearly interpolates an x-y data set to determine the interpolated y-value corresponding to an input x-value. More... | |
| std::vector< std::pair< double, double > > | MPI_calculateProbHistAvg (const std::vector< std::pair< double, int >> &input_hist) |
| Uses MPI to calculate the average probability histogram from separate histograms coming from different processors. More... | |
| std::vector< double > | MPI_calculateVectorAvg (const std::vector< double > &input_vector) |
| Uses MPI to calculate the element-wise average vector from separate vectors coming from different processors. More... | |
| std::vector< double > | MPI_calculateVectorSum (const std::vector< double > &input_vector) |
| Uses MPI to calculate the element-wise sum vector from separate equally sized vectors coming from different processors. More... | |
| std::vector< int > | MPI_calculateVectorSum (const std::vector< int > &input_vector) |
| Uses MPI to calculate the element-wise sum vector from separate vectors coming from different processors. More... | |
| std::vector< int > | MPI_gatherValues (const int input_val) |
| Uses MPI to gather integer values from separate processors to build one vector containing all of the data. More... | |
| std::vector< double > | MPI_gatherValues (const double input_val) |
| Uses MPI to gather double values from separate processors to build one vector containing all of the data. More... | |
| std::vector< double > | MPI_gatherVectors (const std::vector< double > &input_vector) |
| Uses MPI to gather vectors from separate processors to build one big vector containing all of the data. More... | |
| std::vector< int > | MPI_gatherVectors (const std::vector< int > &input_vector) |
| Uses MPI to gather vectors from separate processors to build one big vector containing all of the data. More... | |
| std::string | removeWhitespace (const std::string &str) |
| Removes all spaces and ta characters in a string. More... | |
| int | round_int (const double num) |
| Rounds the input double value to the nearest integer value. More... | |
| bool | str2bool (const std::string &input) |
| Extracts a boolean value from a string containing "true" or "false". Throws an invalid_argument exception if the input string is not "true" or "false". More... | |
| template<typename T > | |
| double | array_avg (const T data[], const int array_size) |
| This template function calculates and returns the average value in double format when given an array of numerical datatypes. More... | |
| template<typename T > | |
| T | array_median (const T data[], const int array_size) |
| This template function calculates and returns the median value when given an array of numerical datatypes. More... | |
| template<typename T > | |
| double | array_stdev (const T data[], const int array_size) |
| This template function calculates and returns the standard deviation in double format when given an array of numerical datatypes. More... | |
| template<typename T > | |
| int | array_which_median (const T data[], const int array_size) |
| This template function determines which element in the data array has the median value of the dataset. More... | |
| template<typename T > | |
| double | intpow (const T base, const int exponent) |
| This template function calculates and returns the results of an integer power operation on a base numerical datatype. More... | |
| template<typename T > | |
| void | outputVectorToFile (std::vector< T > &vec, std::string filename) |
| This template function outputs the input data vector to a file with the specified filename. More... | |
| template<typename T > | |
| void | outputVectorToFile (std::vector< std::pair< T, T >> &vec, std::string filename) |
| This template function outputs the input data pair vector to a file with the specified filename. More... | |
| template<typename T > | |
| void | removeDuplicates (std::vector< T > &vec) |
| This template function efficienctly removes the duplicate entries from an input vector. More... | |
| template<typename T , typename A > | |
| double | vector_avg (const std::vector< T, A > &data) |
| This template function calculates and returns the average value in double format when given a vector of numerical datatypes. More... | |
| template<typename T , typename A > | |
| double | vector_median (std::vector< T, A > data) |
| This template function calculates and returns the median value when given a vector of numerical datatypes. More... | |
| template<typename T , typename A > | |
| double | vector_stdev (const std::vector< T, A > &data) |
| This template function calculates and returns the standard deviation in double format when given a vector of numerical datatypes. More... | |
| template<typename T , typename A > | |
| int | vector_which_median (const std::vector< T, A > &data) |
| This template function determines which element in the data vector is closest to the median value of the dataset. More... | |
| std::ostream & | operator<< (std::ostream &stream, const Version &input) |
Variables | |
| Version | Current_version ("4.0.2") |
| double Ising_OPV::array_avg | ( | const T | data[], |
| const int | array_size | ||
| ) |
This template function calculates and returns the average value in double format when given an array of numerical datatypes.
| data | is the array of numerical data. |
| array_size | is the size of the input data array. |
| T Ising_OPV::array_median | ( | const T | data[], |
| const int | array_size | ||
| ) |
This template function calculates and returns the median value when given an array of numerical datatypes.
| data | is the array of numerical data. |
| array_size | is the size of the input data array. |
| double Ising_OPV::array_stdev | ( | const T | data[], |
| const int | array_size | ||
| ) |
This template function calculates and returns the standard deviation in double format when given an array of numerical datatypes.
| data | is the input array of numerical data. |
| array_size | is the size of the input data array. |
| int Ising_OPV::array_which_median | ( | const T | data[], |
| const int | array_size | ||
| ) |
This template function determines which element in the data array has the median value of the dataset.
| data | is the input array of numerical data. |
| array_size | is the size of the input data array. |
| std::vector< std::pair< double, double > > Ising_OPV::calculateCumulativeHist | ( | const std::vector< std::pair< double, double >> & | data | ) |
Calculates the cumulative histogram from the input probability histogram data.
| data | is the input probability histogram which is a vector of x-y pairs consisting of bin-centered x values and probability y values. |
| std::vector< std::pair< double, int > > Ising_OPV::calculateHist | ( | const std::vector< int > & | data, |
| int | bin_size | ||
| ) |
Calculates the histogram for the input integer data vector using the input bin size.
Linearly spaced bins are automatically created from the minimum value to the maximum value of the data set with the specified bin size. The function outputs bin-centered x values and counts y values in a x-y pair vector.
| data | is the input integer data vector. |
| bin_size | is the specified bin size |
| std::vector< std::pair< double, double > > Ising_OPV::calculateProbabilityHist | ( | const std::vector< std::pair< double, int >> | hist | ) |
Calculates the probability histogram for the input histogram data vector. The function outputs bin-centered x values and probability y values in a x-y pair vector.
| hist | is the input histogram data vector. |
| std::vector< std::pair< double, double > > Ising_OPV::calculateProbabilityHist | ( | const std::vector< int > & | data, |
| int | bin_size | ||
| ) |
Calculates the probability histogram for the input integer data vector using the input bin size.
Linearly spaced bins are automatically created from the minimum value to the maximum value of the data set with the specified bin size. The function outputs bin-centered x values and probability y values in a x-y pair vector.
| data | is the input integer data vector. |
| bin_size | is the specified bin size |
| std::vector< std::pair< double, double > > Ising_OPV::calculateProbabilityHist | ( | const std::vector< double > & | data, |
| int | num_bins | ||
| ) |
Calculates the probability histogram for the input double data vector using the input number of bins.
Linearly spaced bins are automatically created from the minimum value to the maximum value of the data set. The function outputs bin-centered x values and probability y values in a x-y pair vector.
| data | is the input data vector. |
| num_bins | is the desired number of bins. |
| std::vector< std::pair< double, double > > Ising_OPV::calculateProbabilityHist | ( | const std::vector< double > & | data, |
| double | bin_size | ||
| ) |
Calculates the probability histogram for the input data vector using the input bin size.
Linearly spaced bins are automatically created from the minimum value to the maximum value of the data set. with the specified bin spacing. The function outputs bin-centered x values and probability y values in a x-y pair vector.
| data | is the input data vector. |
| bin_size | is the desired bin size. |
| std::vector< std::pair< double, double > > Ising_OPV::calculateProbabilityHist | ( | const std::vector< double > & | data, |
| const double | bin_size, | ||
| const int | num_bins | ||
| ) |
Calculates the probability histogram for the input data vector using the input bin size and input number of bins.
Linearly spaced bins are automatically created starting from the minimum value of the data set. The function outputs bin-centered x values and probability y values in a x-y pair vector.
| data | is the input data vector. |
| num_bins | is the number of bins that will be created. |
| bin_size | is the input bin size. |
| std::vector< std::pair< double, double > > Ising_OPV::calculateProbabilityHist | ( | const std::vector< double > & | data, |
| const double | bin_start, | ||
| const double | bin_size | ||
| ) |
Calculates the probability histogram for the input data vector using the input bin start value and bin size.
Linearly spaced bins are automatically created starting from the bin start value. The function outputs bin-centered x values and probability y values in a x-y pair vector.
| data | is the input data vector. |
| bin_start | is the starting value of the first bin. |
| bin_size | is the input bin size. |
| double Ising_OPV::integrateData | ( | const std::vector< std::pair< double, double >> & | data | ) |
Numerically integrates a vector of x-y data using the trapezoid rule.
| data | is the data vector containing x-y data pairs. |
| double Ising_OPV::interpolateData | ( | const std::vector< std::pair< double, double >> & | data, |
| const double | x_val | ||
| ) |
Linearly interpolates an x-y data set to determine the interpolated y-value corresponding to an input x-value.
| data | is the data vector containing x-y data pairs. |
| x_val | is the x-value that will be interpolated to. |
| double Ising_OPV::intpow | ( | const T | base, |
| const int | exponent | ||
| ) |
This template function calculates and returns the results of an integer power operation on a base numerical datatype.
| base | is the base of the integer power operation and can be any numerical type. |
| exponent | is the integer exponent for the integer power operation. |
| std::vector< std::pair< double, double > > Ising_OPV::MPI_calculateProbHistAvg | ( | const std::vector< std::pair< double, int >> & | input_hist | ) |
Uses MPI to calculate the average probability histogram from separate histograms coming from different processors.
Each processor calls this function and sends an input histogram. Each input histogram must have the same bin size.
Upon function return, processor 0 receives the average probabiliy histogram and all of the other processors receive an empty probability histogram.
| input_hist | is the input histogram data from the processor calling the function. |
| std::vector< double > Ising_OPV::MPI_calculateVectorAvg | ( | const std::vector< double > & | input_vector | ) |
Uses MPI to calculate the element-wise average vector from separate vectors coming from different processors.
Each processor calls this function and sends an input vector. If vectors are different sizes, the function uses trailing zeroes to make all vectors the same size before averaging. Upon function return, processor 0 receives the average vector and all of the other processors receive an empty vector.
| input_vector | is the input data from the processor calling the function. |
| std::vector< double > Ising_OPV::MPI_calculateVectorSum | ( | const std::vector< double > & | input_vector | ) |
Uses MPI to calculate the element-wise sum vector from separate equally sized vectors coming from different processors.
Each processor calls this function and sends an input vector. Upon function return, processor 0 receives the sum vector and all of the other processors receive an empty vector.
| input_vector | is the input data from the processor calling the function. |
| std::vector< int > Ising_OPV::MPI_calculateVectorSum | ( | const std::vector< int > & | input_vector | ) |
Uses MPI to calculate the element-wise sum vector from separate vectors coming from different processors.
Each processor calls this function and sends an input vector. Upon function return, processor 0 receives the sum vector and all of the other processors receive an empty vector.
| input_vector | is the input data from the processor calling the function. |
| std::vector< int > Ising_OPV::MPI_gatherValues | ( | const int | input_val | ) |
Uses MPI to gather integer values from separate processors to build one vector containing all of the data.
Each processor calls this function and sends an input value. Upon function return, processor 0 receives the data vector and all of the other processors receive an empty vector.
| input_val | is the input integer data value from the processor calling the function. |
| std::vector< double > Ising_OPV::MPI_gatherValues | ( | const double | input_val | ) |
Uses MPI to gather double values from separate processors to build one vector containing all of the data.
Each processor calls this function and sends an input value. Upon function return, processor 0 receives the data vector and all of the other processors receive an empty vector.
| input_val | is the input double data value from the processor calling the function. |
| std::vector< double > Ising_OPV::MPI_gatherVectors | ( | const std::vector< double > & | input_vector | ) |
Uses MPI to gather vectors from separate processors to build one big vector containing all of the data.
Each processor calls this function and sends an input vector. Upon function return, processor 0 receives the large data vector and all of the other processors receive an empty vector.
| input_vector | is the input data from the processor calling the function. |
| std::vector< int > Ising_OPV::MPI_gatherVectors | ( | const std::vector< int > & | input_vector | ) |
Uses MPI to gather vectors from separate processors to build one big vector containing all of the data.
Each processor calls this function and sends an input vector. Upon function return, processor 0 receives the large data vector and all of the other processors receive an empty vector.
| input_vector | is the input data from the processor calling the function. |
| std::ostream& Ising_OPV::operator<< | ( | std::ostream & | stream, |
| const Version & | input | ||
| ) |
| void Ising_OPV::outputVectorToFile | ( | std::vector< T > & | vec, |
| std::string | filename | ||
| ) |
This template function outputs the input data vector to a file with the specified filename.
| vec | is the input data vector. |
| filename | is the input file name. |
| void Ising_OPV::outputVectorToFile | ( | std::vector< std::pair< T, T >> & | vec, |
| std::string | filename | ||
| ) |
This template function outputs the input data pair vector to a file with the specified filename.
| vec | is the input data pair vector. |
| filename | is the input file name. |
| void Ising_OPV::removeDuplicates | ( | std::vector< T > & | vec | ) |
This template function efficienctly removes the duplicate entries from an input vector.
This algorithm allow efficient removal of duplicate vector objects when > or < comparison operators do not exist.
| vec | is the input vector to be operated on. |
| std::string Ising_OPV::removeWhitespace | ( | const std::string & | str | ) |
Removes all spaces and ta characters in a string.
| str | is the input string |
| int Ising_OPV::round_int | ( | const double | num | ) |
Rounds the input double value to the nearest integer value.
| num | is the input double value. |
| bool Ising_OPV::str2bool | ( | const std::string & | input | ) |
Extracts a boolean value from a string containing "true" or "false". Throws an invalid_argument exception if the input string is not "true" or "false".
| input | is the input string. |
| double Ising_OPV::vector_avg | ( | const std::vector< T, A > & | data | ) |
This template function calculates and returns the average value in double format when given a vector of numerical datatypes.
| data | is the vector of numerical data. |
| double Ising_OPV::vector_median | ( | std::vector< T, A > | data | ) |
This template function calculates and returns the median value when given a vector of numerical datatypes.
| data | is the vector of numerical data. |
| double Ising_OPV::vector_stdev | ( | const std::vector< T, A > & | data | ) |
This template function calculates and returns the standard deviation in double format when given a vector of numerical datatypes.
| data | is the vector of numerical data. |
| int Ising_OPV::vector_which_median | ( | const std::vector< T, A > & | data | ) |
This template function determines which element in the data vector is closest to the median value of the dataset.
if multiple values are equally close, the first one in the vector is selected.
| data | is the input vector of numerical data. |
| Version Ising_OPV::Current_version |


My name is Aaqa Ishtyaq, I'm a 23 years old Pythonista, full stack developer based in Bengaluru, India.
Currently, I'm in New Delhi/India, If you are around then let's meet and have a chat on coffee
I'm a massive cyberpunk nerd with an interest in open source and devops.


This is the story of the rat we brought home from Publix.
Danielle and I had gone out shopping to pick up some necessities for the week. It was raining, so neither of us had much desire to be out, but out we went.
By the time we finished, the rain had stopped, but the ground was still wet. We walked to the car, put all of the groceries in the back, and I put away the grocery cart. On my way back to the car, I noticed a furry white thing dash under the car.
I stared blankly at the pavement trying to make sense of what I had seen. It was too small to be a cat, and the way it moved reminded me of a rodent. According to Danielle, all I said during this time was “Aww…”
“What is it?” she asked.
“I think a rat just crawled under the car,” I said, deciding that the furry must not have been a cat.
“What do we do about it?” she asked, hesitantly.
“Catch it, of course.” Some part of me knew that what I was doing was crazy, but a larger part of me didn’t care. I love rats, and I had several as pets during college. Regardless of the outcome, if I didn’t try to save this animal from the cats and soccer moms that would surely kill it on sight, I knew I would regret it.
Danielle took a little convincing, but when I explained to her that Fancy Rats don’t exist in the wild, she decided to let me try my crackpot plan. We took a recycling bin out of the trunk, put some of the cereal we had just bought inside of it, and tried to coax the rat into it. She was much to clever for that (the nickname we gave her at first was “Prudence”). After about 15 minutes of her avoiding the bin by walking sideways like a crab, I put the bin down. Enough of that nonsense.
By this time, a few Publix employees had noticed our erratic movements around the parking lot (I can only imagine what we looked like to people that didn’t see the rat). When one of them walked up to see what was going on, the rat simply ran up to him and crawled around on his shoes for a few minutes.
When he went back into the store, I decided to test my luck. Against my better judgement (and Danielle’s warnings), I decided to simply kneel down and hold out my hand. The rat walked right up to me. I tried to pick her up, and she let me. Deciding not to tempt fate, I quickly placed her into the recycling bin. She didn’t seem to mind. Danielle later wondered if the rat just wanted to be held.
Danielle and I took her home, the insanity of what we were doing sinking in along the way. Now what?  We placed the new rat in. She didn’t bite me this time either. (I must be a rat whisperer.)
I gave her a quick examination, and to my amazement, she seemed perfectly healthy, except for the sneezing, which I guessed was partially caused by being out in the rain. I took her to the vet the next day, and he confirmed my thoughts… she just had a mild case of myco. And he was “fairly sure” that she was a female. When I mentioned that most male rats I’ve encountered were quite obviously male, he merely commented, “Yeah, usually…” Deciding I didn’t want to know the story behind that comment, I laughed it off.
He gave me some medicine to give her, and we were on our way.
Since we already had rats, and this one had become our “new girl”, Danielle suggested the name Zoey, a tribute to Zooey Deschanel. I thought it was clever, and our other room-mate was fine with it, so it was decided.
Zoey – the rat who lived. What are the odds?


{% blocktrans %}Share This Question!{% endblocktrans %}
{% include "opendebates/snippets/social-links.html" %}
{% else %}
{% blocktrans %}This question has been removed.{% endblocktrans %}
Our team of moderators has determined that this question violates our
participation guidelines. If you have any
questions or concerns, or believe we should reconsider the moderators'
review, please contact us.
{% endif %}
{% if related1 %}
{% blocktrans %}You may also be interested in...{% endblocktrans %}
{% include "opendebates/snippets/idea.html" with idea=related1 is_related=1 %}
{% if related2 %}
{% include "opendebates/snippets/idea.html" with idea=related2 is_related=1 %}
{% endif %}


Natalee Holloway's mother returns to Aruba, where her daughter was last seen nearly 15 years ago
by WABCNatalee Holloway's mother is returning to Aruba, the island where her daughter went missing in a heart-breaking crisis the nation followed in 2005.
Friday night on 2020, you can see Beth Holloway's journey back to where her world fell apart.
Beth's trip to the picturesque vacation spot is not for pleasure, but for closure. Beth wants to talk to the mother of Joran van der Sloot, who was with Natalee the night she went missing.
Joran and Natalie were seen together on surveillance tape on May 30, the night she went missing. van der Sloot says he left Natalee at the hotel.
TIMELINE: Natalee Holloway's disappearance remains unsolved nearly 15 years later
"He says that she got out of the car, and that she stumbled, and that she hit her head, and two security guards helped Natalee up. Those are the last two people that he left Natalee with," Beth said.
Van der Sloot told a different story when interviewed in 2006, saying "the last time I saw her she was sitting in the, on the sand by the ocean."
Van der Sloot was in trouble again in 2010, when another woman, Stephany Flores Ramírez, was found dead in his hotel room. This time, it was a similar story - they were seen on surveillance tape with van der Sloot's fingerprints all over the room. He pleaded guilty to her murder and was sentenced to 28 years.
Beth seems more at ease with van der Sloot in prison. Now, she wants to talk to his mother.
"I've met with Anita early on in 2005," Beth said. "I just wondered what her take on him is now."
See more at 9 p.m. EST tonight on ABC.


Xiaomi Mijia Electric Razor S500 hits the market for 199 yuan ($28) -
by Efe UdinRate this post
Chinese manufacturing giant, Xiaomi, is into a lot of products that have nothing to do with smartphones. The company usually co-operates with third-party brands and it has been quite successful. One of its trusted third-party brands is Mijia which manufactures home products. Not long ago, Xiaomi Mijia launched the Mijia electric razor S500 which is an upgrade of the first generation. Now, this electric razor is available on Jingdong for 199 yuan ($28) but it will officially ship on November 20.
According to the official introduction, the Xiaomi Mijia electric razor S500 adopts a three-head design. It comes with 360° floating shaving capacity, IFT suspension float, and double-layer blades. The interior has a high-grade Japanese motor that has dual gears and can automatically select a gear for use.
One of the upgrades of the Mijia electric razor S500 is its LED display which is on the shaft of the device. This screen displays the percentage of electricity and also reminds you to clean the slag. The razor supports IPX7 waterproof thus you can rinse the device in water. In terms of battery life, the Mijia electric razor S500 can work for two months on a single charge. In addition, it uses a USB Type-C charging interface.