text:
Advertise your Business
Add Business
My Account
Construction Materials
/ Construction Materials
Advertise under Construction Materials here, its Free
Any materials and services required in Construction.
Showing adverts 15 to 30 in 'Construction Materials'
Search Website
Adverts Found
Aludaw - aluminium doors and windows
South Africa - ALberton
Viewed: 41 times
Aludaw - aluminium doors and windows - With over 15 years experience in the aluminum industry, Aludaw was established. We are focused on providing our customers with efficient, fast and friendly service. We guarantee to better any written quotation, proving that we are determined to providing cost effective aluminum solutions to all our valued cu
Palisade, clearview fence,carports. Any steel
South Africa - Germiston
Viewed: 38 times
Palisade, clearview fence,carports. Any steel - Eagle Steelworx takes good pride in doing palisade fences, clearview steel fence, carports or any steel work. We also manufacture slide gates , swing gates and pedestrian gates. The client comes first and is very important to us.
Buyers of scrap metal and plastic.
South Africa - Durban
Viewed: 27 times
Buyers of scrap metal and plastic. - Hello I buy scrap metal such as steel, batteries, copper, brass, stainless steel. ETC from companys and households
I also buy scrap plastic such as ABS, PERSPEX, STYRENE, CAR BUMPERS, POLYCARB, PVC. We handle big and small ( tons or kg).
Give me a call to see if what you have can pay you.
Gamma Electronics
United States - Pomona
Viewed: 27 times
Gamma Electronics - Gamma Electronics leads the industry in innovative solutions for wire and cable identification, as well as complete connection, conductor, joint, and terminal protection products.
h2Advantages of doing business with Gamma:/h2
Knowing that you are buying quality marking systems and heat shrink labels supplied at a grea
CC Scrap Metals
South Africa - Pretoria
Viewed: 37 times
CC Scrap Metals - WE BUY Aluminium, brass, insulated cables, armoured cables, scrap radiators, motor transformers steel and scrap iron.
WE DONT BUY asbestos, chemicals, flammable substances, explosives, any vessel containing liquids or any other hazardous items.
Interchange GlassAluminium
South Africa - Somerset West
Viewed: 28 times
Interchange Glass&Aluminium - Our services includes the following:
Frameless Folding doors, frameless showers, frameless balustrades
Aluminium Folding doors, aluminium sliding doors, aluminium windows and aluminium balustrades
We also replace wooden frames with aluminium frames
We do free quotes that gives you value for money
Agm wendys
South Africa - Rustenburg
Viewed: 33 times
Agm wendys - We sell big and small Wendys homes and we treat for water and termites call 0781646973 this company makes very quickly and quality Wendys homes big and small and we deliver in all part of south Africa you just call us we come and build them for u just prepaid us some bricks for levelling the floor u call us and sent adress
SA Enterprises.
South Africa - Midrand
Viewed: 61 times
S&A Enterprises is a Newly found Wood pallet company with outstanding service and focus on client relationship and product quality. We believe in getting the best price for our clients, building a fruitful relationship and delivering great service.
Please note we are always willing to negotiate the best prices for our clients.
We ma
Comming Concrete
United States - Davisburg
Viewed: 38 times
Comming Concrete - Garden or the portion of your homes and business places can be made to look elegant and attractive now with the help of the light royal cummingconcrete services. Use the successful Cumming concrete solutions. Remember, there are not too many credit worthy team of concrete Clarkston Michigan experts and super active flatwork Roch
Allrock Supplies Aggregates
South Africa - Johannesburg
Viewed: 56 times
Allrock Supplies & Aggregates - "Allrock" Supplies & Aggregates ...
We Supply Landscaping and Building Supplies to the Public, Landscapers, Contractors, Nurseries, Building Depots.
Are you stuck between a Rock and a Hard place?... We are only a phone call away...
Contact us:
Tel: 062 930 9758
Email: carla.allrock.suppli
South Africa - Boksburg
Viewed: 130 times
OTR TYRES AND TRACKS AFRICA (PTY)LTD - Being frontiers in the Industry OTR TYRES AND TRACKS AFRICA,
the very first to specialize in the super solid range.
Sourcing the best in the world to suit African needs.
PVC Net and Steel Traders
South Africa - Johannesburg
Viewed: 47 times
PVC Net and Steel Traders - We manufacture, repair and install swimming pool nets and tarpaulins. We want to keep the little kids out of the pools as well as leaves etc in the winter. You can phone us for a free quote. Call, sms or email me, Gerhard on 0798885900 or email@example.com
Palisade and tubular fencing
South Africa - Kuils River
Viewed: 47 times
Palisade and tubular fencing - I manufacture palisade,tubular fences, motor gates, pedestrian and security gates as well as general welding work.
I do all the welding myself and are on site to do the installation together with my workers. It is always my vision to deliver the best product and service. Products can be galvanized or epoxypowder
Fence Factory
United States - Agoura Hills
Viewed: 38 times
Fence Factory - Fence Factory is California-based #1 fence manufacture company which offers reliable fence supplies & installation services and your one stop shop for all fencing needs. The company provides services to the commercial, residential and industrial sectors. There is a variety of Fences and other products such as a wood fence, vinyl fe
South Africa - CAPE TOWN
Viewed: 60 times
ASAP UPVC WINDOW DOOR SYSTEMS - ASAP uPVC is the preferred South African supplier of uPVC (unplasticised polyvinyl chloride) window and door systems. Our products are expertly manufactured by the European and global industry leader ENDERPEN.
Our Windows and Doors systems are available in Single and Double glazing. Our products range inclu
Creative Cornicing
South Africa - Durban
Viewed: 47 times
Creative Cornicing - Creative Cornicing is a South african company, which was established in 2005, and specialises in the manufacturing and fitting of polystyrene cornices.
Our Profiles are shaped and cut from rigid extruded polystyrene foam, which has been manufactured to international specifications and standards.
We offer a wide rang


text:
Custom Search
220.127.116.11.2 Multiple Electrode System. The resistance of a single vertically driven ground rod may also be
reduced if additional ground rods are connected in parallel with the given ground rod using a 1/0 AWG bare
copper cable to interconnect the rods. It is however important to note that total system resistance is sensitive
to electrode spacing. Electromagnetic interaction between multiple (M) ground rods that are spaced too closely
prevents the resistance of the total earth electrode subsystem connected in parallel from being l/M times the
resistance of a single rod. If the electrodes in a multiple electrode system are spaced at 1.5 to 2 times the
length of a rod, the interactive influence is minimized and total resistance of the system will approach the
18.104.22.168.3 Earth Electrode Subsystem. The earth electrode subsystem should, soil and tactical conditions
permitting, consist of properly spaced ground rods interconnected in parallel by a bare 1/0 AWG copper cable.
The interconnecting cable for tactical situations should be clamped to the ground rods to facilitate installation
and transportability. Earth electrode subsystems shown in Figures l-9 and l-100 may be installed around the
perimeter of temporary enclosures housing several stand-alone equipments such as portable single subscriber
terminals, telephones, or small switchboards. These earth electrode subsystems should extend 0.6 to 1.8 meters
(2 to 6 feet) beyond the dripline of the enclosure to ensure that any form of precipitation wets the soil around
the system. Earth electrode subsystems in radial or star configurations may be employed but are less suitable
for (a) grounding equipments operating at rf such as radar or microwave systems, or (b) providing low impedance
grounds between interfacing shelters required to lessen interference or voltage surges caused by lightning
discharges. Means of calculating ground resistance of the entire earth electrode subsystem are described in
Section 2.6 of Volume I while measurements of these systems are described in Section 2.7.
126.96.36.199.4 Chemical Treatment. The resistance of driven ground rods may be reduced by chemically treating
the soil around the rod and the interconnecting cable/wire. Addition of ion-producing chemicals such as
magnesium sulphate (epsom salts), sodium chloride (table salt), and potassium nitrate (saltpeter) as well as
bentonite to the soil adjacent to an electrode has the net effect of increasing the apparent cross-sectional area
of the electrode and minimizing the current density of the soil. Use of magnesium sulphate or bentonite is
recommended because of their low corrosive effect on metal and high electrical conductivity. A circular
trench approximately 0.3 meters (1 foot) deep and 0.9 meters (3 feet) in diameter should be dug around the
electrode at a radius of 0.45 meters (1.5 feet) from the center of the electrode. The trench is filled with the
saline solution and covered with earth. In order to provide the best distribution of the treating material with
the least corrosive effect the solution should not actually touch the electrode. Additional information is
provided in Section 2.9 of Volume I.
Detailed Tactical Grounding Requirements.
18.104.22.168 Introduction. It is important that serious consideration be given to grounding implementation. Proper
grounding can have a significant impact on the ability to maintain communications under adverse conditions.
This section contains grounding requirements for tactical deployments of mobile equipment. Grounding
methods set forth are based not only on implementation considerations but also on complying with specific
measured resistance requirements. The tactical deployments of mobile equipments are considered to be of four
types; i.e., stand-alone equipment, stand-alone shelter, collocated equipments and collocated shelters.

subset: commoncrawl


text:
Effective teacher-based assessment adjustments for students with disability
About the project and an invitation to schools, teachers and students. This project is working with teachers in secondary schools to see how they develop adjustments in classroom assessments to allow students with disabilities to do as well as possible.
Teachers are required by law to provide such adjustments to give students opportunity to demonstrate their learning, while at the same time meeting course requirements for student outcomes.
There is little research or practical guidance on how to create assessment adjustments in classroom assessment. Too often, schools and teachers rely on the very limited types of accommodations available to students on standardized tests and examinations, when many more options are available. This is not necessary in classroom assessments that teachers develop, where it is not even necessary for students to all do the same assessment task, as long as the same curriculum learning focus is maintained. However, a central concern of many teachers, and students and their parents, is how to create assessments and assessment adjustments that are fair for all.
This project has a specific student focus. We are studying secondary school students taking subjects such as English, Maths and Science, Health and Physical Education, or the Arts. The nature of the disabilities of the students in our study does not prevent them from studying the curriculum at their school Year level. Adjustments may be needed in how students are taught, how they can access curriculum materials, and how they are assessed, the focus of our study.
Data collection for the project is being collected through an innovative online research site. The site not only provides the mechanism for easy data collection from teachers, students and parents, but it also provides resources and discussion forums for participants in the study.
The project has received approval from many system authorities in many states. After developing all our resources and data collection tools, we have completed a pilot with a school in 2017. In 2018 we are collecting data from all Australian schools, teachers and students who would like to participate. If you are interested in being involved in this project, please email email@example.com.
- Australian Research Council, Discovery Grant, $310,900
- 2015-2018


text:
The collaborative economy is a driving force of a new era, and it could lead us to a more social, sustainable and economically sound society. More and more people see the possibilities that the various collaborative economy platforms offer. In addition to the opportunities, we recognise the challenges that the new economic models provide. In this way, we can address the growth of the collaborative economy in a successful manner. This is what we strive towards with our mission. We believe that the whole is more than the sum of its parts. Thus, we work with the entire playing field consisting of startups, corporates, governments, research institutions and individuals.
'We believe in a world where everyone has access to all products and services,
necessary for a connected, prosperous, sustainable and happy life.'
We are hosting a lunch where we will discuss the collaborative economy, the world, the future, disruptions, questions, and wherever the discussion will take us.
264 Keizersgracht
Amsterdam 1016EV
Google map and directions
Who's RSVPing
Showing 6 reactions
Jorn Fricke posted about this on Facebook 2017-06-07 03:05:24 -0700Please RSVP: ShareNL lunch - discussing the world, the future and the collaborative (sharing) economy
Jörn Fricke rsvped 2017-06-07 03:04:55 -0700
Sami Erpo rsvped +2 2017-06-02 06:57:04 -0700
Shari Ruppert rsvped 2017-06-02 05:43:37 -0700
Theresa Thomasson is hosting. 2017-06-01 04:42:52 -0700
Theresa Thomasson published this page in Home 2017-06-01 04:42:52 -0700


text:
The complimentary slot video games are not significantly various from playing numerous various other on-line ports or playing in a continent casino site. The complimentary slots are based on opportunity. The gamer should win or lose in the game, but every little thing depends upon the method of the player. Because the ports can be used line easily, one need not download the software program for this online game. Mainly, majority of the complimentary slot are focused to offer enjoyable only wit out the need for paying cash. The benefit of the totally free port online games are that they can be played at your home and also the standard point you require the web connection for you to play. There exist numerous web sites which offer various type of slots also, along with the paid on the internet slots.
The company of free ports have a theme of absorbing even more individuals to such games and also produce a temptation to play a lot more in the starting freely and also in the future develop a lure to make earnings making mindset among the gamers and gradually draw the direction of the on the internet slots which are played through repayment. As an on the internet slot player, you need to be quite cautious not to get addicted very much towards such online games as well as restrict yourself and happy when it comes to a modest gain. Never lose your control while playing the slot and also wagering more than you can manage will certainly cause heavy loss for you. There is no harm in playing the free slots for fun purpose. The complimentary flash slot games offer another pleasure and offer an excellent amusement encounter. Ports are offered to the consumers by the gambling enterprises as a trial to understand whether the clients like the games or otherwise before they decide to download the video games and supplying the very first deposit.
The on-line video port have actually become preferred nowadays which are akin to the port which are regular or classic click to read more seen in numerous continent gambling establishments. The only distinction of video slot is that it makes use of the video aesthetic and the 5 reels, when compared to the olden ports where it uses just three reels yet winning at port provide the exact same enjoyment. There are several totally free video clip slots which are made obtainable in the site and also after enables you to open the slots and also one can play completely display version or it is feasible for you to adjust the home window to the size you prefer and also do the playing. Of late, the manufacturers of the video slots have made several campaigns to put forth the video clip slot online games which are based on some motif. Such video clip totally free ports game need the certificate of the movie firm or require the authorization from a celeb because the port may be based on the celeb or based upon certain personalities seen in a film.


text:
Thursday, April 15, 2010
Memory board
Another small project for your living space or work place. I used an old frame and black velvet ribbon to create this memory board. Just staple the ribbon to the frame. Pay a visit to your stationary shop and get a few nice clips. Then create your own creative collage of cards, photos and magazine clippings.
No comments:
Subscribe to: Post Comments (Atom)


text:
We're pleased to announce that Buildmyflatpacks.com for Business is now active and we are in talks with numerous businesses at this time to provide furniture assembly on their behalf. Buildmyflatpacks.com for Business is a great products for customers who own a furniture shop and require furniture assembly. Take a look at the full press release.
Buildmyflatpacks.com have been offering flat pack furniture assembly for over five years now and aim to be the UK's first choice furniture assembly service offering great value flat pack furniture assembly up to seven days a week depending on which location flatpack assembly service you use.
News >


text:
CHESTERFIELD, Mo. – Like most 8-year-old boys, Luca Gruszka is full of energy.
He's outgoing.
Very funny.
And within the last two years, he has gotten more into sports, which is why going to Francis Howell for a basketball game didn't seem like anything out of the ordinary. But Katya Gehrin, the president of Francis Howell's Make A Wish club, had ideas.
"I think it's going to be shock," Gehrin said when asked how she thinks Luca would respond to getting his four-year wish, a trip to Legoland.
Once the girls game was over, and much to Luca's surprise, he became the main event.
"We have out here tonight, joining me... This is Luca," said the public address announcer. "Luca, how you doing tonight?" Luca's response, "Good."
With his Mom and Dad eagerly watching from the sideline, Luca's dream was about to become a reality. All he had to do was wave his wish wand and say these six words.
"I want to go to Legoland."
Just like that Luca's wish was granted, as Rascal Flatt's "My Wish" infused the gym. Gehrin knew Luca was more than deserving, after being diagnosed with acute lymphoblastic leukemia in December of 2016.
"He's very positive," added Gehrin. "He really doesn't have a negative attitude towards anything."
Luca doesn't just like Legos, he loves Legos, and it's easy to see. In the basement of his home, he and his family have essentially built a little Legoland of their own. There are three tables and three shelves that hold everything from airplanes to dinosaurs to people. However, there's so much more that goes into putting each brick together.
"I was at the hospital for awhile and I kept getting Legos as gifts because of my fingers," said Luca. "They um, were getting?" He then looked up at his mom.
"The vincristine that he got as a part of his chemo made his fingers shake a lot," said Angela Gruszka. "Which was what he was trying to explain."
Then Luca added, "Legos actually helped me take care of it."
Legos now serve a new purpose in the Gruszka's lives. They're no longer just a toy to play with. They help Luca.
"If he gets up in the morning, he'll come right down here," said Angela. "This is where he goes. This is his happy place."
Which is why Angela doesn't mind if an entire room in the family's basement is consumed by Legos. She'll admit though, it did take some getting used to.
"You know when he first started getting into Legos I was very annoyed," she said. "I stepped on them. They broke. I couldn't figure out how to rebuild them. It was very, very challenging. Now he can rebuild them by himself when he breaks them so we've come a long way."
He even replicated St. Louis Children's Hospital out of Legos. It's where he was first diagnosed. It's also where he'll continue to fight until April of 2020.


text:
IML GetCompanies - SFN
This website uses cookies primarily for visitor analytics. Certain pages will ask you to fill in contact details to receive additional information. On these pages you have the option of having the site log your details for future visits. Indicating you want the site to remember your details will place a cookie on your device. To view our full cookie policy, please click here. You can also view it at any time by going to our Contact Us page.
Sitefind is a search engine dedicated to ten key industry sectors. You can search all industries or choose the one most relevant to you.
CPL Ness HeatshrinkCwm Coking Works, Beddau Llantwit Fardre, Pontypridd, Mid Glamorgan CF38 2PT United KingdomTelephone : 01443 215725Fax : 01443 203296Email : firstname.lastname@example.com : www.nessheatshrink.co.ukProducts : Conveyors, Labelling / Marking, Sealing, Cable / Accessories, Cable Management, Moulding - Plastic, Busbar Systems, Distribution, Cable Management Hardware, Safety Systems - Flame-Proof Products, PlasticsClick here to view published magazine articles for CPL Ness Heatshrink
Agentdraw LtdWeb: www.agentdraw.co.uk | Tel: 0116 2519990
Cabletree (MFG) UKWeb: www.cabletree-mfg.com | Tel: 05600 474 165
Omega PlasticsWeb: www.omega-plastics.co.uk | Tel: 01670 541 890
Rutland Plastics LtdWeb: www.rutlandplastics.co.uk | Tel: 01572 723476
Schulz + Partner GmbHWeb: www.schulzpartner.de | Tel: +49 (7665) 934296-60
Schulz Export GmbHTel: 0049 21515170
Tex Plastic Products LtdWeb: www.tex.co.uk | Tel: 01271 378528
Winslow Adaptics LtdWeb: www.winslowadaptics.com | Tel: +44 (0) 1874 625555


text:
Rise of the Planet of the Apes is a prequel to the historic
Planet of the Apes films and shows that graced the screens of theaters and
televisions in the 60s and 70s. The
movie basically gives us the background on how the "Apes" gain their
intelligence and speaking ability, which eventually leads to their conquest and
enslavement of mankind. For fans of the "Apes"
and newcomers, this movie will be a great introduction to the Planet of the
Apes franchise. Rise of the Planet of
the Apes follows a young chimpanzee named "Caesar", whose mother was exposed to
an experimental drug, which was passed down to him genetically giving him an
enhanced mental capacity that rivals and even exceeds human intelligence. As Caesar grows under the care of his adopted
human father, actor James Franco, his experiences and intelligence makes him
question his life as a pseudo pet.
Amazingly, this is all done without Caesar speaking, but just displaying
emotion and mannerisms, which convey his thoughts and feelings to the
viewers. What is also stunning is the
fact that Caesar is 100% computer generated.
Whoever, animated Caesar did an outstanding job of creating a realistic
chimpanzee. As I watched the film, Caesar's plight brought back memories of
"Roots" and the depression and hopelessness that Kunta Kinta initially
experienced when being held in captivity.
When Caesar and his "Apes" make their escape from imprisonment, I was
pushing for them to make it even though I knew in the end it would not be
beneficial for mankind. Caesar teaching
his "Apes" and preparing them to escape reminded me of the rebellion on Kunta's
slave ship and the movie Amistad.
Although Rise of the Planet of the Apes has a
straightforward story that has very little secrets if you saw the trailer, this
is an exciting movie that should entertain the masses. This is of course plenty of action later on
in the movie, but the first half is actually very touching and I ended up
feeling very sorry for Caesar.
The creators of this movie did a great job of blending this
story into the mythos of the previous films and television shows. There were also a number of "Easter Eggs" in
the film that will give true Ape fans a chuckle. Although I am a fan of the show, the modern
day audience won't accept that a group of escaped "Apes" could take over the
world when we have machine guns, jets and bombs, and I was thinking the same
thing. However, they created a simple
solution to the problem, which will give the "Apes" an easier time accomplishing
this task. I hope this movie is
successful because I can already see the arc of the movies. Movie one: Escape,
Movie two: Survival: and Movie three: Conquest!
Grade: A-


text:
In the Land of Butanding
The butanding are my new neighbors in Donsol, Sorsogon, which will be my home for the next two years. The butanding were discovered off the waters of Donsol in 1998 and the Philippine government moved quickly to declare the area an eco-tourism area to prevent poaching. The whale sharks put Donsol on the map. The town is only one of a few places in the world where you can swim with the whale sharks. Their presence makes my new home a special place. I'm already comtemplating making them my secondary project at site - perhaps an environmental education program and mass cleanup (badly needed) of the beaches near town. Anyone have any ideas about how to get the kids excited about cleaning up the environment, please send them along.
I flew from Manila last Sunday with a fellow volunteer, Pauline, and landed in Naga, in the Bicol region of the Philippines, on a single landing strip in the middle of rice fields surrounded by beautiful mountains. A three-hour bus ride (including time to fix the flat tire!) later, Pauline and I parted ways in Legaspi City, the closest city to my rural site. She headed north to Bucacay, I, south to Donsol. My new supervisor picked me up at the airport and was eager to show off one of the regions most magnificent sites, Mount Mayan volcano. They call it the "perfect" volcano...and it is! Stunning. We took in the view from an observation point halfway up the volcano before heading to Donsol.
The road to Donsol winds up and over hills and is shaded by trees along the route. An old cemetery with family crypts sits at the edge of town. The "downtown" has two main thoroughfares, San Jose Street and Tres Marias Drive. My host family lives on Tres Marias Drive, just down the street from the high school where I will work.
The rest of the town has small little streets lined with mostly bahay kubo, native Filipino houses (huts) made of bamboo. Very simple homes. There is a new, grandly built Catholic church in town, St. Joseph's, and a dilapidated public hospital at the top of a hill with very little equipment, medicine and no bed sheets!
There is a palengke (market) in the center of town with lots of fresh fish and veggies. There is a pizza joint called Nanay's (Mother's) and a karoake bar called the Whale Shark. There is a simple concrete pier with street lamps that runs along the waterfront, where small bahay kubos stand on stilts in a couple of feet of water and surrounded by mangroves. There is garbage everywhere though I did see a group collecting some trash in one swampy residential area. A good sign?
Donsol is a gold mine waiting to happen. A local congressman managed to get some infrastructure put in -- a bridge from town to the beaches, where two modest resorts with huts are operating to cater to tourists who come from all over the world to see the butanding. The road to Donsol was also paved a few years ago. You used to have to hike in when the weather was bad! A river runs under the new bridge headed north to an area where you can take a skiff to view thousands of fireflies at night, another tourist attraction trying to take off. Much of the future of this sleepy little town rests on its potential as a tourist destination.
Here are some more pictures of my new hometown:
A welcome sign was hastily posted while I made my first visit to the high school.
Local kids in Donsol clowning for my camera
A shelter at the local beach. The sand is gray and a bit dirty-looking. Residents burn trash on the sand.
Here's a street near the palengke in the center of town
From left to right, teachers Muriel, Marilyn and Marla were my tour guides for the day
This is a little "harbor" area near the town center
Another view of the harbor. The house in the back is typical of the bahay kubo in town.
A view from the bridge of the downtown waterfront


text:
Get involved in Mental Health Month
To view these events as a calendar or on a map select your choice below on the right.
As part of the Big Anxiety Parramatta Hub, the Parramatta Girls' Home (1 Fleet st, Parramatta) will be open to visitors on 21 October. An audio tour created by the Parragirls (former residents) provides unique insight into the lives of women who were committed to the home in the 1970s when courts deemed them "exposed to moral danger". Download the tour in advance from: https://soundcloud.com/user-461765716/sets/parragirls?utm_source=soundcloud&utm_campaign=share&utm_medium=twitter.
A bus will run from Riverside Theatres, Parramatta (a short walk from Parramatta station) to the Girls Home every half an hour from 12-5pm. At Riverside Theatre Courtyard is an interactive exhibition of Virtual Reality projects, relating to mental health, as well as the Big Anxiety's Mobile Mood Lab. Pick up a map or take a walking tour of festival art works in the surrounding area.
More information is here https://www.thebiganxiety.org/events/check-in-lounge/


text:
[1] i-limb hand: Get a grip on functionality. Available at http://www.touchbionics.com/.Google Scholar
[2] Otto bock: Transcarpal hand with dmc plus control. Technical report. Available at <http://www.ottobock.com/>.Google Scholar
[3] G. A. Bekey, R. Tomovic, and I. Zeljkovic. Control architecturefor the Belgrade/USC hand, pages 136-149. Springer-Verlag, New York, 2009.Google Scholar
[4] J. T. Belter and A. M. Dollar. Performance characteristics of anthropomorphic prosthetic hands. In IEEE International Conf.on Rehab. Robotics, pages 921-927, Zurich, 2011.Google Scholar
[5] I. Carpinella, J. Jonsdottir, and M. Ferrarin. Multi-finger coordination in healthy subjects and stroke patients: a mathematical modelling approach. IEEE Transaction on Automation andControl, 8(19):1-19, 2011.Web of ScienceGoogle Scholar
[6] M. Carrozza, F. Vecchi, F. Sebastiani, G. Cappiello, S. Roccella†, M. Zecca, R. Lazzarini, and P. Dario. Experimental analysis of an innovative prosthetic hand with proprioceptive sensors. In IEEE International Conference on Robotics and Automa-tion, pages 2230-35, Taiwan, 2003.Google Scholar
[7] C. Castellini, A. E. Fiorilla, and G. Sandini. Multi-subject/daily-life activity emg-based control of mechanical hands. J. of Neuro-Engineering and Rehab., 4(6):1-11, 2009.Google Scholar
[8] C. Castellini, E. Fiorilla, and G. Sandini. Multi-subject/ DLA analysis of surface EMG control of mechanical hands. In Italian Bio-engineering Congress, Italy, 2008.Google Scholar
[9] C. Castellini and S. Patrick. Surface emg in advanced hand prosthetics. Bio. Cybernetics, 100(1):35-47, 2009.Google Scholar
[10] A. D. C. Chan and K. B. Englehart. Continuous myoelectric control for powered prostheses using hidden markov models. IEEETrans. on Biomed. Engineering, 52(1):121-124, 2005.PubMedGoogle Scholar
[11] C. Cipriani, M. Controzzi, and M. C. Carrozza. The smarthand transradial prosthesis. Journal of NeuroEngineering and Re-habilitation, 8(29):1-13, 2011.Web of ScienceGoogle Scholar
[12] B. Crawford, K. Miller, P. Shenoy, and R. Rao. Real-time classification of electromyographic signals for robotic control. Technical Report 2005-03-05, Dept. of Computer Science, University of Washington, 2005.Google Scholar
[13] S. Ferguson and G. R. Dunlop. Grasp recognition from myoelectric signals. In Proceedings of Australian Conference on Roboticsand Automation, pages 82-84, Auckland, 2002.Google Scholar
[14] M. Folgheraiter and G. Gini. Blackfingers an artificial hand that copies human hand in structure, size, and function. In Proc. IEEEHumanoids, MIT, Cambridge, 2000.Google Scholar
[15] K. Hoshino and I. Kawabuchi. Pinching at fingertips for humanoid robot hand. Robo. and Mech., 17(6):655-63, 2005.Google Scholar
[16] C. C. C. C.-W. Hsu and C. J. Lin. A practical guide to support vector classification, 2009.Google Scholar
[17] S. C. Jacobsen, E. K. Iversen, and D. F. Knutti. Design of the UTAH/MIT dextrous hand. In IEEE Int. Conf. on Robotics andAutomation, pages 1520-1532, San Francisco, 1986.Google Scholar
[18] R. S. Johansson and I. Birznieks. First spikes in ensembles of human tactile afferents code complex spatial fingertip events. J.of Nature Neuroscience, 7(2):170-177, 2004.PubMedGoogle Scholar
[19] N. M. Kakoty and S. M. Hazarika. Biomimetic design and development of a prosthetic hand: Prototype 1.0. In 15th Conf. onMach. and Mecha., pages 499-06, India, 2011.Google Scholar
[20] N. M. Kakoty and S. M. Hazarika. Recognition of grasp types through PCs of DWT based EMG features. In Intl. Conf. on Re-hab. Robotics, pages 478-482, Zurich, Switzerland, 2011.Google Scholar
[21] J. J. Kuch and T. S. Huang. Vision based hand modelling and tracking for virtual teleconferencing and telecollaboration. In IEEE/ 5th Internation Conference on Computer Vision, pages 666-71, Washington, 1995.Google Scholar
[22] S. W. Lee and X. Zhang. Biodynamic modeling, system identification, and variability of multi-finger movements. Journal ofBiomechanics, 40(4):3215-22, 2007.Web of ScienceGoogle Scholar
[23] S. Li, J. Liao, and J. T. Kwok. Wavelet-based feature extraction for microarray data classification. In IEEE Intl. Conf. on NeuralNetwork, pages 5028-5033, Canada, 2006.Web of ScienceGoogle Scholar
[24] S. G. Mallat and S. Zhong. Characterization of signals from multiscale edges. IEEE Transactions on Pattern Analysis andMachine Intelligence, 14(7):710-732, 1992.Google Scholar
[25] C. Martelloni, J. Carpaneto, and S. Micera. Classification of upper arm EMG signals during object-specific grasp. In 30th Interna-tional IEEE/ EMBS Conference, Canada, 2008.Google Scholar
[26] R. M. Murray, Z. Li, and S. S. Sastry. A Mathematical Introduc-tion to Robotic Manipulation. CRC Press, USA, 1994.Google Scholar
[27] A. Phinyomark, C. Limsakul, and P. Phukpattaranont. Evaluation of wavelet function based on robust emg feature extraction. In The 7th PSU Engg. Conf., pages 277-281, 2009.Google Scholar
[28] M. A. Smith and J. F. Soechting. Modulation of grasping forces during object transport. J. Neuro., 93(1):137-45, 2005.PubMedGoogle Scholar
[29] F. Vecchi, S. Micera, M. C. Carrozza, A. M. Sabatini, and P. Dario. A sensorized glove for applications in biomechatronics and motor control. In IFESS Conf., pages 346-53, CA, 2008.Google Scholar
[30] M. Yoshikawa, M. Mikawa, and K. Tanaka. Real time hand motion estimation using emg signals with support vector machines. In SICE-ICASE International Joint Conference, pages 593-598, Korea, 2006.Google Scholar
[31] J. Zhong. PID controller tuning: A short tutorial. Technical report, 2006. 9 Google Scholar
About the article
Published Online: 2013-09-11
Published in Print: 2013-09-01
Citation Information: Paladyn, Journal of Behavioral Robotics, Volume 4, Issue 1, Pages 1–9, ISSN (Print) 2081-4836, DOI: https://doi.org/10.2478/pjbr-2013-0001.
This content is open access.


text:
The Civic 30 Fly-By – 4 Person X Workstation creates a fully functional group work space for a quadrant of employees.
A corner workstation ensures everyone has an optimised area for work and can still effectively perform as a team.
This 4 Person Office Workstation blends seamlessly into modern office environments. Featuring the Toro leg with its streamlined frame ensuring extra strength and stability.
Office Workstations are the next generation of optimised work spaces for office environments. They are cost effective, intelligently designed and fully customisable.
Customise Civic 30 screening in one of the many vibrant colours available from our extensive colour range.
** Pricing reflects in stock Shell Grey. All other colours made to order. Prices may vary.
Please Contact a Sales Consultant for a full quote and for assistance with selecting the ideal colours and configurations for your office.
- Toro leg with added strength & stability
- 30mm thick panels
- Half screens for added privacy
- Allows below desk cable management


text:
AMST 3100 The 1960s The End of an Era. Powerpoint 15 Read Chafe Chapter 14, Farber Chapter 11. The End of the 60s. By the late 60s, the Vietnam War had become a prism of American society: it revealed a society divided deeply over war and over cultural values.
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
Powerpoint 15
Read Chafe Chapter 14, Farber Chapter 11
By the late 1960s, most Americans felt the rebellious counterculture was pushing too hard, and many simply found the counterculture war too weird. This image was partly the consequence of the commercial media, which seeks sensationalism and extremism to drive profits, but there's no question there were plenty of targets.
It is likely that the parents – and especially the grandparents – of this couple would not understand or agree with their lifestyle choices. The generation gap was a major source of conflict and misunderstanding as a new wave of values and attitudes had swept into the youth culture.
The Diggers, established in 1966, named themselves after the original English Diggers (1649-50) who promoted a society free from private property and all forms of commercialism. Operating in San Francisco, they set up free food, health care, clothing and other co-ops. Essentially they were an anarchist guerilla street theater group committed to the utopian ideals of the counterculture.
Photo of "hippie hill" in San Francisco, where people still gather to openly smoke pot together. Note the smoke rising from the crowd.
Sexual "liberation" is in context of traditional Christian values that hold that sex is only permissible when it is sanctioned by the Christian church and is done for procreation purposes. The historical forces of technology and globalization brought Americans in contact with other cultures with different sexual mores. Combine this with the pill, the new values of the counterculture, and the marketing of capitalism and you get an explosive result.
The Supreme Court in the 1960s and 1970s struggled with the issue of obscenity. Generally it would endorse the civil libertarian perspective that treats adults as capable of deciding for themselves what they see and read in the media. The Court, which is traditionally conservative, was more liberal in this era. It would slide back toward conservatism by the 1980s.
The counterculture was dripping in sensuality, but their version of sexuality was not what the commercial industry exploited by the 1970s. Much, but not all, of the capitalistic pornography of the 1970s contained shallow sexist messages. To many in the counterculture, sexual liberation meant something deeper and less exploitative.
Charles Manson preyed on hippies, often from broken homes, who had fled to California to find a new life. They were easily manipulated in a cult-like setting with open drugs and sex. Predators like Manson were becoming more common in the late 1960s.
Jim Jones attracted a racially diverse following in the 1960s. He acquired a cult-status in the 1970s that led to the mass suicide of 900+ people in Guyana in 1978.
One of the greatest successes of the counterculture and the civil rights movement in particular involves the opening of democracy to new constituencies. Since the 1960s, Barack Obama and other African Americans have political opportunities that did not exist in the 1950s.
Veterans hold a large antiwar protest in Washington in April, 1971.
National Guard troops prepare to fire on antiwar protestors. The shooting of students symbolized a closing phase of the 1960s. This event, like so many others, contributed to a collapse of idealism.
The expression on this antiwar protestor's face says it all. The mood by the early 1970s was dark and angry, and many were giving up hope in the system.
The long gas lines of 1973 were an everyday reminder that the affluent 1960s were over. Inflation, massive trade deficits, declining job stability, and declining American world prestige were just a few of the negative features of the 1970s. The Vietnam War turned out to be costly in many ways.
The first landing on the moon occurred on July 21, 1969. It was the technological accomplishment of the millennium. The view of Earth from the moon made it appear small and fragile.
April 22, 1970 was the first Earth Day celebration. This rally was extremely successful and the environmental movement remains strong today.
Cesar Chavez was a 1960s activist who led the United Farm Workers. He helped organize field workers to keep them from being exploited by low wages, unsafe conditions, and other hardships. There were many different single-issue rights movements by the 1970s.
The Stonewall riots occurred in 1969 in NY City as gays in local clubs, fed up from being harassed and arrested by the police, rioted for three days. Ultimately, they formed gay rights organizations which took advantage of the earlier lessons of the civil rights movement. Gay rights, like women's rights, and Native American rights, can be seen as an extension of the civil rights movement.
It wasn't just mainstream Americans who were turning inward. By the 1970s many in the counterculture had given up on social activism, feeling somewhat burned out. They sought a back-to-earth simple life in rural America.
President Nixon held his final press conference on August 8th, 1974 before stepping down the next day. Nixon, who campaigned on a law and order platform, was himself a law violator. This was the final straw that brought the collapse of idealism.
The colorful hippies of the 1960s symbolized freedom of expression. By the 1970s most Americans would support this value. Similarly, most Americans began to support cultural diversity and pluralism by the 1970s. Conservative traditionalists, however, were upset by these deep rooted social changes. Ronald Reagan would arouse their attention in the 1980s. There remain continuing deep fissures in American culture.
We take images like this for granted today, but this image was almost unheard of in the 1950s, especially in the South.
Organizations like this began to proliferate after the 1960s. Today most Americans celebrate rather than condemn social and ethnic diversity.
Rural poverty especially has been greatly reduced since the war on poverty. But government programs are costly, and the severe economic hardships of the post-1960s combined with the rise of the conservative right have led to some declines in the welfare state.
The explosion of cocaine use during the 1970s reflected a changing cultural climate. People seemed less interested in spiritual discovery by the 1970s. The shift to cocaine use symbolized a shift to a shallow party-oriented hedonism where the main goal seemed to be escapism.
The environmental movement has been greatly successful at reducing pollution. Essentially the movement argues that the Earth itself - not just people - should be respected lest we harm ourselves. Like the civil rights movement, this movement has fundamentally changed the way Americans behave.
President Kennedy inspects a Gemini capsule – the Friendship 7 – that John Glenn took into orbit on February 2, 1962. The space program was idealistic, risky, bold and ambitious. These qualities were a characteristic of the 1960s.


text:
EKU Center Presents Elf The Musical
ELF The Musical is the hilarious tale of Buddy, a young orphan who mistakenly crawls into Santa's bag of gifts and is transported back to the North Pole. With Santa's permission, Buddy embarks on a journey to New York City to find his birth father, discover his true identity, and help New York remember the true meaning of Christmas. This modern day Christmas classic will make everyone embrace their inner ELF.
For a complete season schedule, with performance times, costs and much more information, visit ekucenter.com


text:
Here are the A-Z reviews of 100 of the best adult cam sites online today...Meet and interact LIVE with thousands of free cam girls from around the world. I will not sell and/or in anyway copy or redistribute the contents of this swinger sex site or any passwords or security codes that I obtain from this site.If I do so and am caught, I agree to pay the administrator of this site no less than five thousand American dollars in damages (THIS IS STRICTLY ENFORCED! I will not attempt to bypass any security and/or access feature at this swinger site.I understand the standards and obscenity laws within the zip code, site, and computer to which I am transporting this material, and am solely responsible for my actions.I will file no charges or suits against the owners of this swinger website.My swinger site is 4 Real, and now our personal amateur swinger videos are in High Def!Everything you see inside my amateur swinger site is part of my real swinging life.
I do not find images, depiction's, or sounds of nude adults, adults engaged in sexual acts, or other sexually explicit material to be offensive or objectionable.I am a hot swinger wife, that is part of a swinger couple that loves to have wild hardcore group sex with other swingers on video.There is nothing posed or faked inside my site, we do not pay people to model, everyone you will find inside are 4 Real!This real swinger couples site contains sexually explicit adult oriented material that is intended only for individuals twenty-one (21) years of age or older.You MUST be 21 years old or older to access this site.We also love to watch all the girls on our live cams, as well as being live on our web cam located inside of our members area!


text:
Sunday, 17 June 2012
Sewing With Little Fingers!
I never really expected to enjoy it quite as much as I did. I put on some music and we sang along to the songs. We joked and laughed. And indeed we prodded our fingers with sewing needles lots as we whipped stitched little fabric hearts or made felt and button brooches.
I must admit that I find it much easier to show kids how to sew or knit than I do adults. I can't exactly explain why either. Maybe it is because they ask simpler questions. Or maybe it is because they don't expect any more of you than to be yourself and for you just to share with them what you know. I will definitely be doing one again. But maybe not three hours long again.!!!
1 comment:
I adore to see a comment popping up. If you have the time, please do leave a few words. I try my best to reply to all the comments that I get.
Note: only a member of this blog may post a comment.
Subscribe to: Post Comments (Atom)


text:
Gaylordsville man charged with DUI
Thomas Leonard
Police said Leonard was traveling south Monday when he hit a raised embankment, causing his car to spin 180 degrees, skid off the northbound lane and hit a boulder.
The investigating officer detected alcohol on his breath, and Leonard failed a series of field sobriety tests.
He is scheduled to appear March 23 in Bantam Superior Court.


text:
For years, a former housemate of mine would prepare a huge bowl of chili for the day of the Superbowl and host quite the blowout party.
Days before the game, he would marinate sirloin in tequila, tossing in jalapenos and green peppers, Tabasco and spices, several types of beans, and ground chuck, and then simmer it all with a North American lager of some sort.
It was a big pot, a big production, and he called it —excuse my language— Asshole Chili, for the feared, and attested to, after-burn. Some of the meat would char, and little specks of burnt black matter would suffuse the goop. Plenty of beer would flow, but large unconsumed quantities would invariably remain the next morning, each year.
Now that time has passed, the true story can be told of the one year when the chili became an accidental culinary hit.
My housemate had done the ritual, cooking a particularly large quantity. Saturday, he moved the pot to the basement to cool overnight.
The next morning, Superbowl Sunday morning, we went down to the basemen to bring the pot back up to the kitchen stove to be re-warmed. It was a bad sight. The handle rivets, aluminum, had reacted with the steel pot. The entire batch of chili was foaming over the top, the color a grayish brown. He disposed of it, not pleased. Guests would be arriving in six hours.
I suggested an emergency plan of action. Why not go to the local supermarket, buy some cheap chili seasoning packets, some cheap ground beef, a couple cans of beans and tomato sauce, and then toss it all together, and simmer it until the guests arrived? The key would be not to tell anyone that anything was amiss or different.
And, it worked —but maybe too well.
Folks helped themselves to several bowls. "This is the best batch Asshole Chili you've ever made," they repeatedly told him. He could only grin and bear it. If they only knew.
That would be Asshole Chili's swan song. The following year, my housemate retired the recipe.
For tomorrow's Super Bowl, here are a few other, less scatalogical, recipes:
- This post has been edited since its original upload. It then included a story about a beef, beer, wine, and jazz recipe that has now been given its own post. Read it: here.
- For more from YFGF:
- Follow on Twitter: @Cizauskas.
- Like on Facebook: YoursForGoodFermentables.
- Follow on Flickr: Cizauskas.
- Follow on Instagram: @tcizauskas.


text:
It's so cool I've given an excited talk about it at work after only a couple of weeks of fiddling with it. And whenever I speak about tech, I try to add a demo or two to tie things together and make points clearer. That led to elm-forecast, a tiny app showing how to call APIs, decode JSON and display things on the screen.
Dark Sky's JSON API offers detailed weather information for most of the world. It has up-to-the minute data for some locations, and powers a lot of nice weather apps, like forecast.io and Weather Timeline. My app was also going to be nice, so I picked it as my data source.
I started by wrapping the current forecast definition as a record:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Record types marry a lot of the feel of JavaScript objects with static types (the things after the colons).
If you're familiar with dynamic languages, the next step will seem alien: instead of just calling something like
JSON.parse(obj) and referencing its fields, we have to tell Elm how to make a typed
Forecast out of the serialized data.
Let's see what it looks like with a smaller object:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
The code above defines a type
Point and a
pointDecoder, which takes care of deserializing an object with two fields (
object2) and returning a
Point. As you can see, no types have been declared, yet Elm has inferred every single one of them.
Json.Decode has functions from
object1 to
object8, capable of building objects with one up to eight fields. What to do with
Forecast, that has 13? "Throw away five things, it's just an example app you're building to learn Elm", thought the lazy author. Luckily, thirst for knowledge (and a little guilt) averted that course, and I relied on what little functional programming I know to almost get there using
Json.Decoder.andThen. Since almost is actually not quite, to Google I went. A thread with a recipe from mr. Czaplicki himself offered the following solution:
1 2 3 4 5
Let's see it in action:
1 2 3 4
apply, you can chain as many decoders as you like and build
objectN. But how does it work?
In Elm, like in Haskell, every function is curried. What it means, in practice, is that every function takes a single argument and returns a value, which can in turn be another function, taking a single argument, returning a value, and so forth. I'll define a function
add that (oh, how impressive) adds two numbers:
1 2 3 4
It looks like a function call with two arguments, like you see in most other languages. But look at the type signature the compiler inferred:
add : number -> number -> number. What do the arrows represent? Well, they tell you exactly that the paragraph above tries to explain. Let's see:
1 2 3 4
When defining
add2, I've partially applied
add with
2, getting another function (now from
number -> number). Calling that function will then result in a final number, the
5 literal that amazes people all over the world. This very characteristic helps you build
In the example a few paragraphs above,
Point is a function with the signature
Float -> Float -> Point. That means that if I try to use it with a single decoder, it will move closer to getting an actual
Point, but not get there yet:
1 2
Looking at the type signature, it's a structure that decodes a
Float and returns another structure that can decode a function
Float -> Point. If I tried to do the same thing with a type constructor that took more arguments, say
Float -> String -> Bool -> String -> Value, the first step would yield a Decoder with type
(String -> Bool -> String -> Value) — solved for the first parameter, still waiting for a resolution for the next three.
apply does then is leverage the fact that you can progressively get to your final value by applying function by function, taking care of spitting out every every step as a
Json.Decoder. There's a name for this pattern of having a function in a box and applying it to values in other boxes: it's an Applicative functor. Now, if you've read a bit about the language, you know that Elm shies away from the burden of a Math-y, Haskell-y lexicon. The great thing is that by hiding the words but showing things in practice, it ends up fostering an intuition in programmers for how the concepts can be useful.
Let's go back to
Json.Decode.object2. It expects
(a -> b -> c) -> Decoder a -> Decoder b -> Decoder c — a function from type
a to
b to
c and
Decoders for
a and
b, yielding a
Decoder c. In our definition
pointDecoder in the beginning of this post, we matched that to a tee, as
Point can be seen as a function taking two
Floats (
a and
b) and returning a
Point record (
c). But
b or
c can also be a function! In fact, that's exactly what we've seen above with
Json.Decode.Decoder (Float -> Repl.Point). Thus, when we say:
and replace
func with
Json.Decoder.Decode (Float -> Point) and
value with
("y" := Json.float), we'll end up with a
Decoder built of applying what's coming out of
value to
Float -> Point, arriving at
Decoder Point. If we manually try to build the same chain, it looks like this:
1 2 3 4 5 6 7 8 9 10
Cool, right? Now that you and I understand the technique, we can go back to the gif above and marvel at how poor my CSS skills are.
What I find the most refreshing as I dive into functional programming is that there's (usually) no magic. If you start peeling the layers, there's just functions brought together to perform amazing things.
apply here is exactly that: the power of a few functions allowing you to convert arbitrarily large structures into a nice type Elm can understand. In a world of "factory this" "IoC container that", you can't help but smile. And it REALLY REALLY REALLY improves your programming everywhere: I'm a fan of saying my Ruby is much better and more maintainable after I decided to learn the functional ways because it's true. Hopefully you can find the same joy.
Analyzing things more carefully, however, I've realized how much it has allowed me to change as a coder. In Ruby, it's very easy to go from "it's like this in language x" to "it's like this in Ruby, too." The "Belle marquise" quality of expression it allows is a source of many joys, and can be quite invigorating as the relationship between it and the programmer develops.
We often feel pressured, in our field, to jump from thing to thing, from shiny to shiny, from silver bullet to silver bullet. "The best tool for the job cannot possibly be the tool you had five years ago" — chants the crowd as they try a new JavaScript build system — "it just isn't right." Reflecting on the role Ruby has had in my life, though, shines light on an aspect we rarely explore: a programming language is a friend. It's not perfect, it can annoy you, but it's there, and by merely being there and helping you think it makes you better.
Ruby is a great friend. We've been together for almost ten years. I can only hope I've been making it better too.]]>
Like fashion, though, sometimes one of those new things is actually well-rounded, makes a mark and becomes permanent. Also like fashion, the new thing might be an old thing that people are rediscovering or just now ready to adopt. Judging by what's on the specialized news, Functional Programming is the old-new rage that's changing the world and is here to stay.
It's no wonder: more enlightened programmers and language designers have sprinkled some of the joys of that paradigm upon our OO tools, making us giggle with happiness when chaining
maps and
injects and taking blocks to change a method's behavior, or using anonymous and higher-order functions in tired and uncool languages of yesteryear, feeling more productive all the way. It's so transformative to think in pipelines and in functional composition that we end up wanting to know how to learn more and feel even better. Functional Programming called, and you answered.
But lo!, what is a catamorphism? What the hell is a Category, and why does it need a theory? Why did someone put a Monad in my burrito? Is Functor just a funny word Erik Meijer says?
Let's face it: it can be daunting. None of the usual landmarks of what we call programming are there to guide you through learning, and it's easy to feel inadequate and, dare I say it, intellectually inferior. Fear not: Pat Brisbin knows this, and is here to help.
"Maybe Haskell", written by the aforementioned mr. Brisbin, is a book of the short and sweet kind. It quickly acknowledges that it probably will not be the definitive guide on any of the subjects it talks about, and moves right on to the material.
From the gates, the author explains referential transparency and uses equational reasoning to show you how a name for an expression (let's say
add(x, y)) can be replaced safely by the expression itself (
x + y). This will become a tool later on to clarify that what seems so elaborate is actually pretty straightforward. It's very effective, because it unfolds everything that looks so terse and codified into its components, and those components into their components, working as both a calming device ("see how simple it is? It's just about context") and an illustration of the power of function composition.
It then gets to its main thread: what is the
Maybe type and how is it built? What does it mean to adopt
Maybe in a code base, and how do you deal with it without having every function in your system taking and returning other
Maybes? Even if you've heard of or applied
Maybe, it might give you ideas and reveal unknown subtleties — especially if all you've learned about it has been self-directed.
From that on you'll hit three head-scratchers in sequence: Functors, Applicatives and Monads. It begins with showing you ways of not infecting your code with
Maybe everywhere and ends with calling functions that take multiple
Maybes, dealing with the possibility of one or more of them not being there. The path is of full of little joys and insights to savor, and you'll get what a Monad does by the end of it (even if the answer to what it is goes through endofunctors and other details).
What I greatly enjoyed was the "Other Types" section. It's brief, but tackles how you can use the same building blocks to improve designs and make errors and side-effects more explicit. While I knew most of the benefits and the material, I thought about the complete novice and how that section could spark new ideas. I didn't "ooh" and "aah" because it was new to me: I did because it will hook a lot of casually interested people who perhaps got the book because it came from someone in the Ruby world and aren't very invested in the ideas of FP yet. It will definitely make Ruby, if nothing else, better.
In the end, even if "Maybe Haskell" just explains enough of what the language can do to support the examples, the quiet imponence and lack of pretense of the language become very evident. As the text progresses, you'll see the ivory tower where FP wizards live for what it really is: a building that begins on the same ground you and I step on, made out of very solid and simple materials. Luckily we have Pat gently guiding us to that conclusion.]]>
That popped up in my mind, and it scared me. I knew Scala was a different beast; I knew there was probably a lot I was missing out on by using my tried-and-true workflows; I knew that IntelliJ was supposed to be amazing. Still, thinking Emacs-the-almighty was not enough frightened me.
When I started on this slow path towards learning FP, I had been using dynamic languages almost exclusively for almost 14 years, with a short stop in C++-land for a couple of them. I was used to a world of mostly ok tools centered on a REPL, and it was fine — programming is more thinking than typing and clicking, that whole spiel. But I had never really done anything in a good type system, and, frankly, it was time I knew how the rest of the world leveraged their tools in order to work more comfortably and effectively.
With that in mind, I evaluated the Typesafe IDE and IntelliJ IDEA 12 and 13, finding a lot of good in both tools (and a few problems, some discussed in my post about the Reactive Programming course). Still, after a few good days with each option, I was tempted to just go back to Emacs and rely on my memory (and Dash) for the API signatures, do all my code refactorings by hand and use the
sbt console for quick explorations.
Then I found out I could have the cake and eat it too.
ENSIME (ENhanced Scala Interaction Mode for Emacs) is a project that gives Emacs IDE-like capabilities. It performs type and error-checking as you write code, provides symbol inspection, facilities for browsing your codebase and performing automated refactorings. It accomplishes all that using the Scala Presentation Compiler, a lightweight version of the infrastructure that goes only as far as needed to resolve types, find errors and do semantic highlighting.
Setting it up is super simple. Using MELPA, install the
ensime package. Then add the following to your Emacs config:
1 2
Then add the plugin to your global
sbt config (e.g.
1 2 3
And then, in your project directory, run
sbt gen-ensime (requires sbt >= 0.13.5). It will resolve the dependencies, install the ENSIME plugin and leave everything ready to go.
Now, when you open a buffer, you're gonna see the following in your mode line:
M-x ensime to start a connection. It might take a few seconds for it to do what it must to analyze your project, but you'll eventually see the mode line change to show it's ready to work.
One of the cool things ENSIME provides is real code completion, based on the type you're dealing with. Instead of the usual
M-/ cycling, you can explore an API by looking at the method signatures and documentation. Here's the thing in action:
Sometimes Scala's type inference engine gets confused, giving you something too broad or too narrow for your needs; other times, you just want to know the type of a
val. Worry not: ENSIME can tell you what has been inferenced just by putting the cursor over the token you want and pressing
C-c C-v i (works a bit like
:t in
You can also show uses of a symbol by pressing
C-c C-v r.
ENSIME offers six simple, but extremely useful automated refactorings:
Of all of these, Import Type at Point is the only one I'd consider flaky. It resolves the type perfectly, but inserts the
import statement inline. I don't know if that's configurable. Otherwise, it works as many other automated tools: finds each change, shows you the substitution, asks you to ok it.
You can use
M-. and
M-*, normally associated with finding tags, to move inside your project.
You can also jump from implementation to test, and vice versa.
scala and
sbt integration
If you press
C-c C-v s, an sbt console will be launched. A lot of my usual Ruby workflow of running specs from keybinds and jumping quickly to the REPL can be reproduced with this feature.
For instance, when you want to run all tests, you press
C-c C-b T. When you wish only to invoke
testQuick, you use
C-c C-b t.
There's keybinds for changing a region or a buffer, too — useful both for playing with code and exercising your Emacs gymnastics.
ENSIME has been fun to work with. It allows me to focus on code and work comfortably with my (admittedly small) projects. It's a great showcase of Emacs capabilities, and has led a couple of hardcore vim-using friends to show admiration.
If you're doing Scala and don't want to commit to an IDE, but wish to have more of a modern environment, please try ENSIME. I even hear there's vim and jEdit clients.]]>
It didn't get recorded this time, but I thought the slides could be interesting. Here they are.]]>
One such reward has been coming into direct touch with property-based testing. This technique, first developed by QuickCheck in Haskell-land, spins automated testing on its head: instead of codifying what is proper behavior by asserting that the outputs for given inputs match what is expected, the tester establishes logical properties about what should happen and lets the tool generate loads of inputs to check if they hold. If something goes wrong, the tool will then try to find the smallest test input that breaks the property (falsifies it), a process called shrinking; if it can't find anything, you can sigh with relief and think about what to scrutinize next.
Having a QuickCheck-like tool at your disposal can be incredibly powerful. The more complex the software or the algorithm, the greater the likelihood of your carefully curated unit and integration tests having blind spots. Basho, for instance, have written about the stark realization that their worker pool library was full of subtle bugs by using QuickCheck for Erlang, and you can find other instances of how the technique helped make better software.
I don't know about you, but when I come in contact with stuff like that I immediately think of how improved parts of my day job would be if I just could apply it. Considering that my daily duties are conducted in Ruby, I felt it was time I explored the subject in that realm.
Let's say we've decided to implement our own linked list class in Ruby. We would probably start our implementation with something like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Using that very convenient API, we can build lists:
1 2
We know that, in a linked list, adding to the head is O(1), while appending to the end is O(n). So we build algorithms that respect its efficiency guarantees. However, when we, say, map this list into another list, it results in the following situation:
1 2 3 4 5 6 7 8 9 10
Processing things from head to tail means the list ends up reversed. It's common, then, to reverse it back when we're done processing, to preserve the order an external user would expect. Let's add a
reverse method to a
List helper module:
1 2 3 4 5 6 7 8 9
So when we try to reverse what was created in
do_something_amazing, we get what we need:
Awesome. I think this is enough for us to start exploring properties. If you're getting bored, take a sip of coffee and come back when you're ready. There's a few cool tricks below the fold.
Being the good developers we are, we are covering that code with tests:
1 2 3 4 5 6 7 8 9 10
We're pretty confident that's enough, even if it was kind of boring to do manually. That amount of testing would let us go home and sleep soundly.
First, we'll need something like QuickCheck in Ruby. The best, most idiomatic, most maintained, least-Monad-y thing I have found is Rantly. It has both primitive value generation built-in and property testing with shrinking. We'll skip over the basic API and go straight to defining a property to check if my algorithm is really bullet-proof. To aid in the creation of lists from Arrays, we'll add a new helper:
1 2 3 4 5 6
To check that it works, let's change the existing tests and see if they still pass:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9
Great. Now to the newfangled thing. As I mentioned before, writing a property to check requires us to think differently than we would with regular unit tests. Your formulation should state something logical, something that does not rely on specific inputs. Following that guideline, we can reason about reversing lists in the following manner:
1 2 3 4 5 6 7 8 9 10
The meat is in the
check block. Determining that a list has been reversed correctly requires us to check if reversing it again gets us back to the original list. To seed our check, we build a
property block that creats an array with a random length between 0 and 1_000_000, itself filled with random integers. Let's run the tests again:
1 2 3 4 5 6 7 8 9 10 11 12 13
It took a while (we wanted to be thorough, with those million-item arrays), but we're pretty sure it works. I'm a believer and I'm stoked; when I look at you, however, I see a face that says "look, it's cool and all, but isn't it kind of worthless? The tests we had were telling us the same thing, and we only needed the power of our minds to generate the correct inputs. Why go through so much trouble?"
Well, what about those times when ours minds fail us?
Let's say you're excited about building your own data structures and want to wrap that linked list inside a very inefficient Set. You mutter to yourself that you should make sure items are not inserted twice, which for now seems to be the main difference between Sets and Lists as storage containers.
You build a little more structure into what you already have, adding a
prepend method and inlining
reverse into a
List base class:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
To check if an item exists, you add a
contains? method:
1 2 3 4 5 6 7 8 9 10 11 12 13
Then you write your immutable Set and matching tests:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
And because I spotted you writing new code and yelled "HEY USE RANTLY IT'S SO COOL YIPEE", you add some property tests:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
It looks good:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
You then implement the removal of items:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
Your tests pass, but this time you don't listen to me about adding another property. You're just not that convinced they're worth their salt, and it looks good enough to ship with all the tests you've added. The Pokémon Collecting app you work on can benefit from it right now, instead of 20 minutes from now. To production it goes.
Time goes by, and you've forgotten about me and our little adventure. Your system is humming along and moved on to maintenance mode. Days have been kind of slow, so you decide to add an optimization you've read about in Hacker News, detailing how a node.js program got a 10x speedup. You modify your delete method accordingly:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
CI still reports all green.
A few days later, you receive a report from a User telling she deleted their Pokémon with power level 3, but her Pokémons with levels 4013, 1551 and 20000 disappeared. Your first line of defense — your tests — have not caught any issues. Sweating bullets and drowning in emails from stakeholders and other Pokémon fiends, you're about to collapse.
And then you remember: what about trying to express a property to see if it holds?
1 2 3 4 5 6 7 8 9 10 11
You run it and it explodes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
What? How come you've only got 2 when you expected 8? Well, there must be something wrong with delete, after all. Let's take that array and try it on an pry session to see what happens:
1 2 3 4 5 6
Wait a minute! Should delete also remove everything that's over 1000-ish? Is there anything in the code that stipulates such a thing? Maybe that node.js optimization was not so great after all. Let's remove it and run the tests:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Voilà: properties have saved the day, and you've learned not to trust Hacker News bravado ever again.
Sort of. For one, you have to write your own generators every time you want something other than basic types, while both QuickCheck and ScalaCheck can figure out a lot by themselves. This can make expressing what you mean a lot easier, and you don't spend time debugging your
property blocks in search of mistakes. That said, writing a generator for your own types requires only that you instantiate them in the
property blocks with other auto-generated values.
Shrinking is not as good in Rantly. It works ok a lot of the time, but it could be improved. On the surface, from skimming the algorithms used in ScalaCheck and Rantly, it doesn't seem that different, but over that side of the line the patterns in minimization seem easier to spot.
There's also no mechanism to test stateful code. ScalaCheck has Commands to help in modeling state changes, and I'm aware PropEr and QuickCheck for Erlang also provide something in that direction.
One minor thing is that integration with RSpec and MiniTest could be improved. Its output pollutes the test run, and on large suites it becomes hard to know the relationship between a failed property and a failed test. It should be easy to fix for anyone motivated. On that note, there's no ready-made extension for MiniTest (although adding one is trivial enough that I'm sending a PR to fix it).
I hope I have proven, even if with a craptastic example, that property-testing can aid you in writing better Ruby code. Our community is great when it comes to using tests both as a design and as a verification tool, and QuickCheck (via Rantly) is a new way of thinking about them. You should keep your TDD/BDD to carve out your objects and responsibilities, but also add property checks where suitable to strengthen your confidence in the system.]]>
A ideia da minha apresentação foi dar uma pincelada nos problemas clássicos de threading, explicar en passant as ideias do Actor Model, e por fim encerrar na aplicação disso dentro do Celluloid. Claro que há informações vitais que ficaram de fora, que a superficialidade pode ser criticada, que o palestrante é meio capenga, mas espero que no cômputo geral o resultado tenha agradado.
Por fim apresentei um projetinho que fiz especialmente para o encontro, o Balladina. Foi divertido fazê-lo, e aprendi bastante coisa sobre o Celluloid no processo. Pude também contrastar algumas coisas com a parca experiência que tive com o Akka no curso do Coursera, e a maturidade do Celluloid relativa à do Akka me deixou esperançoso de um futuro bacana no Ruby. Vamos torcer pelo melhor.]]>
As it usually goes, a new decision was made to support multiple Roads per User. Now, a download of 800KB of data (stored in an IndexedDB for later sessions) was tolerable; potentially multiple megabytes would be deadly, even if the software could be used before that constant feedback of conversions was given — it just became one of those features Users hold on to.
I knew that we had to go for a solution that kept that intact and made the whole thing manageable. I had dabbled in WebSockets before (with node.js and Socket.IO) and kind of knew the lay of the land. Still, from previous searches, I was also aware there was a dearth of Ruby solutions, and for a moment considered going with my JavaScript port on node. The thought gave me shivers.
The first step was finding out what could be used. This is what I evaluated:
The first three are EventMachine-based; tubesock uses rack hijacking; webmachine-ruby provides WebSockets via Reel, a Celluloid::IO-based HTTP server.
At first, considering I was already using Sinatra, I tried sinatra-websocket. For some reason I just couldn't get the connection to be upgraded to a WebSocket, and decided to move on quickly. faye-websocket I just skipped, to be frank.
The next two suffered from the same problem: after booting Rails and loading the structure, I was left with only enough memory for a couple dozen or so clients on a small Heroku dyno. Also, Rails' boot time coupled with building the thing occasionally made Heroku think something had gone wrong, and often the process crashed before the service went up.
The only one left, if you're counting, was webmachine-ruby.
Setting up was relatively easy. To ramp up, I first migrated the original HTTP-based service to its resource structure. It has more of an OO flair than both Rails and Sinatra, with the caveat that it provides a lot less (by design). The dispatcher is easy to understand, and I quite enjoyed toying with the visual debugger.
Moving to a WebSocket, however, changes everything. As far as I can tell (and the documentation specifies) you completely skip over the regular infrastructure by providing a callable to a configuration option, as such:
1 2 3 4 5 6 7 8
That is pretty much what the docs say. Since it only expects the handler to respond to #call, you can write your own ad-hoc dispatcher:
1 2 3 4 5 6
What the docs don't address are some basics of sockets programming. If you see your handler hang and never respond again, requiring you to restart, don't fret: you just have to provide a loop to read from the the socket and let Celluloid::IO do its non-blocking magic:
1 2 3 4 5 6 7 8
Don't worry: your CPU won't be pegged at 100%, because non-blocking. You'll be subjected, however, to the same limitations node has regarding CPU usage and its event handlers (i.e. if you are CPU-intensive, you'll affect throughput).
Luckily, we have threads in Ruby. I decided to take advantage of that by assigning each client to a Celluloid Actor, which allows me to provide some of the CPU-intensive operations without compromising (at least not heavily) other Users. It has been working fine so far.
My solution doesn't take into account non-WebSocket clients, but it should. webmachine-ruby makes it easy by allowing you to implement streaming APIs without much trouble, and I suppose it'll only take a bit of JS to fallback from one to the other and provide an abstract connection to consumers.
The documentation also doesn't go over all the events that can happen on the socket (onerror, onclose, onopen, onmessage). You can see them as methods on the socket, each taking a block, but for my use case I just let the actor crash and be done with it. If I'm missing some cleanup, please let me know.
This architecture also doesn't provide a ready-baked pub/sub system, with channels and message brokers. If that's more in the spirit of what you need, check out faye and websocket-rails.]]>
It starts with mr. Odersky's already familiar style, reviewing some of what was taught in the previous course and expanding on some topics. The dreaded Monads were dealt with, and while I can't talk about the subject from a theoretical standpoint or offer a perfect explanation, I feel I grasp how they can be used to compose behavior and express functionality better.
The second part was the highlight, for me. Erik Meijer (from LINQ and Reactive Extensions fame on the .NET land) has an incredibly upbeat energy and great sense of humor, which carry you like a breeze through the amazing concepts he expresses. I loved thinking about Event streams and how to compose them using monadic combinators in the form of
Observables (alongside
Promises and
Futures). I think this affected me the most, for I could clearly see how to mix and match things to add behavior.
The third part was also very good. Roland Kuhn (Akka's tech lead) has a soft-spoken style that relaxes you while he lays the groundwork over which you'll learn about Actors, building distributed systems and dealing with failure in that model. He also shows piece by piece what Akka can do (which led me to explore more of Celluloid, a topic for a future post).
Everything comes together with each week's exercises. The first was a quick-and-simple one that explores property testing. I went through it quickly, but I still find it hard to apply that mode of thinking, and didn't get much out of the technique later on. I know this is a personal limitation, as some people in the course forums mentioned using it to great effect.
After that, you get a wake-up call that this is gonna require some hard work right as you're asked to build two simulations: one of circuits, with emphasis on building a demultiplexer, and one of an epidemy. The fact that this involves timing and sequencing makes you think about state and purely functional programs. Building something substantial (and fun to watch) gives you an appreciation of their usefulness.
Erik Meijer's had cool, practical examples: you build a node-style web server (with a Reactor loop) in the first week and a Wikipedia Swing client using reactive streams for GUI events and networking in the second. It makes you want to write everything in this style, because it becomes much easier to think about what happens when with whom.
The third section, on Akka, takes the prize in this area: first you redo the binary search tree exercise from the first course using Actors, which I found a great idea, as you're confronted just with the new concepts. Then you are challenged into building a (simplified) distributed key-value store, including replication and joining of new nodes. Describing this exercise to colleagues made them want to take the course. I hope they do.
Being forced to use more Scala made my interest in it grow more and more. Alex Payne has said that it feels a bit like Ruby in its expressiveness, and I got that while building the exercises. I confess it is refreshing and enlightening to use types as a way of reasoning, and not as something that just soothes a compiler with a frail ego.
On the other hand, tooling was problematic. Being an Emacs user, I try to keep in it at all times, and surprisingly (coupled with ENSIME) the experience was not bad. Still I tried to take the opportunity to learn a little bit more about what is offered and how well it works, and the experience was not so great. Importing the provided Eclipse projects sometimes resulted in missing dependencies; importing the sbt project in IntelliJ IDEA resulted in error messages complaining about the TEST context, which some of the students claimed could be solved with nightly builds of its Scala and SBT plugins.
In ENSIME it mostly worked fine. Sometimes I needed to run the tests before generating the project in
sbt, or to regenerate the project as I fleshed out the code. This was not that that awful, in the end: coming from a world of no static types, no code completion, poor navigation (seriously, guys, I've used dynamic languages for over 15 years, and grep/ack/ag is not a good replacement) and pretty crude automatic refactorings, it felt like I was thrown into a better world. I find myself missing it in my daily Ruby dealings.
I realize the situation with Eclipse and IntelliJ may be specific to the course, as the canonical thing to use was sbt. However, being that sbt is the canonical build tool, period, it made the experience messy, and complaints in the forum suggest there's still a lot to improve here. We developers are used these sorts of hurdles (and, let's be frank, to learning workarounds), but this is the type of thing that turns off someone that is not yet invested in the tech.
Comparing my approach to my fellow students', I found I could go through most things relatively easily, based on experience alone, but that eventually I had to exercise muscles in areas I consider mostly weak: self-reliance and grit. It was necessary to overcome my impulse to procrastinate when facing a roadblock, and also to not feel guilty about going to the forums, reading about other people's struggles or using a test suite that some kind soul provided for everyone else.
To face things that are known but empirically unexplored made me question my ability, and demanded a hard look at my self-image. It took great care and some pain to keep motivated and think of the outcome. The sense of pride from having completed this without delaying a single exercise makes me believe I can accomplish more. Furthermore, getting a near-perfect score for the effort is very sweet.
I hope this helps me become a little more patient. My instinct is to go for quick intellectual gratification, for tight feedback loops, and that is not always possible (or even desirable). Standing on the shoulder of giants requires a climb; I must remember not be discouraged after the first stretch.
I recommend everyone to go through this course. It is challenging, rewarding and (for me) a good source of personal growth. Scala is very interesting, and worthy of your time, and Akka is incredible. I found the different teaching styles refreshing, a great way to keep the learner engaged. All in all, a delightful experience.]]>
As a remote worker myself, I nodded my head frequently at the advantages and challenges presented, so the rating's not about a fundamental disagreement with the message or the intentions. Like the authors, I know from personal experience that commuting, facing a strict set of working hours, interruptions and living with the expectation of availability from others are some of the greatest dangers to productive work (creative work especially).
I did, however, expect more than short chapters and sparse data points. Maybe it's the programmer in me misunderstanding the whole "business book" thing, but perhaps the arguments would hold more weight if they were more than anedoctal. They render the whole thing as an account of what works for 37signals — a very small and relatively unknown company in the greater scheme of things. I understand that relying on managers and employers to be swayed by arguments from authority is antithetical to the book (the thesis being that remote work is a rationally better decision overall), but we cannot underestimate how many small-to-medium companies manage by emulation. Maybe stronger data and clearer research could counter gut reactions better.
I think this might be good if you need just a little push to go after this, if you're a bit on the fence and already considering/thinking this is a trend that should be studied and followed. If you want something to challenge your views with great insights, don't bother: it's fluffy and humane and beautifully illustrated, but you're probably going to leave the book mostly unchallenged.]]>
Both of us still work on code. Our approaches differ both because of our relative gaps in experience (I've worked on more projects, and with Ruby specifically for a lot longer) and our personalities. The last point does not generate contention per se, but leads to clearly different stances when it comes to quality in our work: my ultimate goal is that everyone folds their branches back to
master with tests and properly factored code; he knows tests are a force for good, but often lets them slide for different reasons.
Recently we've discussed this and the effects it has on the rest of the team. One of the junior developers has become completely test-averse, carelessly breaking parts of the suite and shrugging it off. While I have called attention to many instances of the thing, the separation of responsibilities means it's up to him to make changes to the process and accountability, which he vowed to do.
That is, until he merged a branch he worked on for almost two months, clearly never running the tests, and broke the build.
My frustration skyrocketed when I got the notification from the CI server (and many others from Code Climate about the decline in quality, but that's a subject for another post). It took me a few minutes to regain my composure, get the code, confirm NO TESTS were running, and write to him that the build was badly broken. He retorted with an excuse that surely made a lot of sense to him ("I needed to share some code with the junior dev"), but only got me more pissed. It was 10pm on a Friday night, and I decided to let it go.
The whole thing left a bad taste in my mouth, though. The experience I had at the other company was terrifying precisely because a mission-critical Rails app went up without a single test, resulting in very long working hours and awful bugs in production — all in a culture that eschewed personal responsibility and poo-pooed the thought of having a process. Maybe I've been burnt a lot more than the young guns working with me now, but I just know it will bite us down the road, and that it will result in dissatisfied customers, long nights and me not even having the energy to say "I told you so". For now he can say our code isn't in production. But it isn't YET.
That, in the end, is what makes me angry. That otherwise intelligent people can't see that they're gonna pay tenfold for the cost they are avoiding now by not learning and following best practices, and that testing, while certainly not flawless, helps you sleep peacefully knowing that the code you changed didn't break anything in the suite and the build.
I'm not yet sure. I'm often afraid that it hinges on a personal commitment to learning and improving your craft. Other times, though, I wonder if it isn't just an absence of mentors who are patient and didactic enough to sit beside someone that isn't convinced and work him or her through it, and of company cultures that accept that the time it takes to make things better is not money wasted.
It doesn't help that a lot of people still don't know the first thing about things you and I take for granted. Most of them think "Refactoring" is a menu on their IDEs, or empty jargon to use when code needs some TLC. Forgive them, father Fowler, for they do not know what they are doing. Basic concepts may have to be more evenly spread before we can talk about building the next step.
One thing I can personally improve is on communicating clearly to my teammates and people close to me is that I care about these practices, making it clear that my interlocutor is not expected to know everything about it (I certainly don't). I also have to understand it may be an unwelcome message at times, and that I should just take the time it needs.
It's hard to not cry foul when people don't do what they say they're going to. The situation that triggered this logorrhea, now that it's through, must be assessed not as some act of malice, but simply as the disconnect between discourse and what is perceived to be a pressing matter. And to be fair, this particular instance had a happy ending: after my frustrated emails, the dude went back and made things right with the code and the build is bright green. Hopefully it will be ok to talk about it openly as both the wrong and the right thing to do, and prove compelling enough for the junior devs and other coworkers to feel engaged.]]>
What I'm doing differently this time is following along with the 1986 lectures, which at least one person in every SICP-related Reddit/HN thread has recommended (and I ignored). I usually prefer learning from books and documentation, but the lectures have the benefit of requiring focus and monotasking. Also, listening to the audience's questions makes me a bit more aware of what is hard for a person with the Math background but not the programming skills — the exact opposite of my situation, and a great aid in keeping things in perspective.
As predicted, said Math-heaviness still makes me a little bit uncomfortable, but I'm soldiering through. That means stopping at an exercise, reading Wikipedia and sometimes just taking things at face-value, as I don't have the intuitions someone more familiar with the subject matter would. It takes some patience, sometimes, and I would be lying if I told you it doesn't discourage me a bit.
That said, Chapter 1 is done. Now on to Chapter 2. Wish me luck.]]>
The truth is the book scares me. Reading it puts me face-to-face with my incipient Math skills, and the thought of overcoming them brings about the fear of not going through any transformations, to still be beneath the nice and impressive people I follow on Twitter and star on GitHub. Looming doom is baked into my personality, and maturity hasn't made me get Goals or appreciate what I've accomplished.
I'm turning 30 in less than two months, and the failure is following me into a new decade. As weak as symbolic dates and its resolutions are as motivators, I really want to tick that box in the not-so-distant future. This blog will be a tale of a confused man walking through the land of Scheme, occasionally going off-topic, but always using the book as its main thread. I hope it's not too boring.]]>


text:
"Inventions have long since reached their limit, and I see no hope for further developments."
Roman Engineer, Julius Sextus Frontinus, 10AD
"Everything that can be invented – has already been invented."
Mr Charles Duell, Commissioner of the US Patent Office, 1899
New ideas are usually generated when someone has a problem to solve – Necessity is the Mother of Invention. Solutions to problems don't always come easily, especially when it's an old problem and a better solution is required. And often we are put on the spot by clients who need a solution "right now". Invariably a form of "writers block" sets in – it is very hard to have a good idea in a hurry. So we use a brainstorming process to get the ideas happening.


text:
We use cookies to enhance your website experience. By continuing to use our website without electing an option below, you are agreeing to our use of cookies.
Douglas Rappaport Quoted by Financial Advisor IQ on Pitfalls of Robo-Advisors
Douglas Rappaport, a partner in Akin Gump's litigation practice, has been quoted in the Financial Advisor IQ article "Keep Your Robo Cool or It Might Land You in Hot Water," regarding the potential liabilities financial advisers might face when they use robo-advisors to provide advice to their clients.
For some, as the article reports, robo-advisors can help cut costs, streamline asset allocation models or help engage with younger clients. But, as noted, there is also growing liability for those who use the robo-advisors incorrectly.
Rappaport said advisors need to do much more than simply conducting due diligence when buying a robo: "You can't just leave it alone. It requires monitoring, and must be checked and retested in normal market conditions and under stress, especially if the robo's job is not only to recommend asset allocation but also rebalance portfolios. If an algorithm isn't choosing properly for technical reasons, then you will have a misallocation in the client's portfolio."
Rappaport compared the potential liability exposure of using robo-advisors to that of faulty algorithms in the electronic trading world, where bad or malicious programming has been known to crash markets, such as the so-called Flash Crashes of May 6, 2010, on the New York Stock Exchange and on the Singapore Exchange in October 2013.
"When it comes to the use of algorithms anywhere in the financial system, the abiding concern of regulators is a ghost in the machine. When you withdraw the human element it makes the process non-sentient," said Rappaport. "We live in a world where computerization is seen as perfect and pristine, but that's not always the case. While less emotion in investing may sound attractive and automation is certainly cheaper, the potential exposure an RIA leaves itself open to can increase significantly without the proper monitoring."


text:
Q&A Categories
Find a Question:
Huawei develops technology for smartphone battery ten times faster recharging
Huawei comes with a quick charger technology for lithium-ion batteries of smartphones. According to the Chinese company there may be with an adjustment of the anode to ten times the battery to be charged more quickly than has hitherto been possible with conventional models.
The technology was developed by a laboratory which is affiliated with Huawei and has been extensively tested in recent times, it allows the Chinese manufacturer on its community website. During the so-called Battery Symposium developed battery charging technology was presented in Japan, but it is not yet clear if it can be used commercially. According to Huawei is working with industry partners to develop the technology.
In a video you can see how quickly a 3000mAh smartphone battery can be recharged using the new technology. In five minutes the battery is charged almost half full through a specially developed charger. This is considerably quicker than has hitherto been possible with conventional batteries and chargers: Huawei can according to the new battery, the charging of mobile phones make up ten times faster than is usual up to now.
The new battery with so-called hetero atoms, atoms other than carbon or hydrogen which are located in a molecular ring structure. These are connected to the graphite molecules in the anode of the battery, in order to be able to 'catch' with higher efficiency as lithium ions. This speeds up the charge, but has no negative effect on battery life and energy density, argues the author. However, many details are still missing, because Huawei without detailed explanation of the mechanism of action has been put online. Also lack precise figures achieved load speeds and the life of the new batteries.
Incidentally, Huawei expects to deploy the new technology is not just for smartphones. Other devices like wearables and the batteries of electric cars could benefit from the new technology.Viewing:-225
Answer this Question
You must be Logged In to post an Answer.
Not a member yet? Sign Up Now »
Sign Up
Get all of your questions answered now!
Member Log In
Star Points Scale
Earn points for Asking and Answering Questions!