Accounting Software2 by Omn1scient   
Need accounting software for our small business. (Budget: $250 - $750 CAD, Jobs: C++ Programming, Software Architecture)
          Hire a Linux Developer by aalesh28   
Embedded C based project on a 32 bit Linux processor. Someone with the knowledge of how the ROP (return oriented programming) is done and shellcodes. Not a major project, have done most of the work, just need help with a little bit of trouble shooting... (Budget: $250 - $750 USD, Jobs: C Programming, Embedded Software, Linux, Software Development, Ubuntu)
          The 8 Best Titles Coming to Amazon This July   

The Amazon Prime Video catalog is growing by the month, and not only because a ton of old movies are jumping into the public domain. They’re getting their hands on Oscar and Emmy winners, along with an ever increasing selection of original programming. If you don’t have Amazon, now may be the time to consider […]
        

          For sale - 06-09 range rover engine hse computer ecu ecm pcm... - $29   
Grand Prairie TX, United States
Used Ranger Rover hse Engine Computer Removed from a 2009 Range Rover hse with 90,000 miles (not Sport Model) . Most Engine Computers will require reprogramming by your dealership in order to function properly. *Shipping for Domestic States only . All Sales are final, No Return
ebay.com

          The Pet Parade Blog Hop #202 with Rascal & Rocco Co-Hosted by Basil & Barking from the Bayou   

 background image NextMars used under licence from shutterstock.com 


Pawesome Friday greeting wunderpurr furriends

Welcome to another Friday on the blog.  Well we've come to the end of our regular programming schedule fur a while, Mandalas on Monday and Amber's Wordy on Wednesday will return in the Autumn or as our fabulous furriends offur the pond say; Fall.  

But neffur fear, we've not left mew empty pawed as on this weeks posts mew can download our new perma free Colouring With Cats Book II ~ Easy Mandalas and mew have today to get yourself three of our Kindle books fur free too!

AVAILABLE FROM 28th - 30th JUNE




So we hope that will keep mew in reading material and colouring pages until the posts resume.

In other news our Summer Blockbuster, The Last Big Jolly starts on Tuesday and will run all summer...


...so join us as we travel around the wurld in 42 and a bit days.  It's going to be the adventure of a lifetime! MOL



And if mew missed anything during the last week, here's the latest links fur your purrusal!




We'll be back our usual Selfie Selection on Sunday, so hope mew can join us then.

In the meantime we wish mew all an epically epic weekend!

Happy Hopping

Sweetest purrs & nose bumps

Basil & Co xox

Pet Parade blog hop for pet bloggers

To see this weeks

 FEATURED FAVOURITE 

just pop offur to:




get the InLinkz code


          JYB TV Recruitment Into Vacant Positions   

JYB TV is a 24/7-television station on Startimes Channel 361 offering indigenous content for children, teenagers and young adults. It is the go to station for quality children’s and youth oriented programming and promises to deliver wholesome content that will enrich the lives of its viewers.   Job Title:  Presenters (Female) Job Description We are looking for […]

JYB TV Recruitment Into Vacant Positions


          Functional Jobs: OCaml server-side developer at Ahrefs (Full-time)   

What we need

Ahrefs is looking for a backend developer with a deep understanding of networks, distributed systems, OS fundamentals and taste for simple and efficient architectural designs. Our backend is implemented mostly in OCaml and some C++, as such proficiency in OCaml is very much appreciated, otherwise a strong inclination to intensively learn OCaml in a short term will be required. Understanding of functional programming in general and/or experience with other FP languages (F#,Haskell,Scala,Scheme,etc) will help a lot. Knowledge of C++ and/or Rust is a plus.

Every day the candidate will have to deal with:

  • 10+ petabytes of live data
  • OCaml
  • linux
  • git

The ideal candidate is expected to:

  • Independently deal with bugs, schedule tasks and investigate code
  • Make argumented technical choice and take responsibility for it
  • Understand the whole technology stack at all levels : from network and userspace code to OS internals and hardware
  • Handle full development cycle of a single component - i.e. formalize task, write code and tests, setup and support production (devops), resolve user requests
  • Approach problems with practical mindset and suppress perfectionism when time is a priority
  • Write flexible maintainable code and adapt to post-launch requirements’ tweaks

These requirements stem naturally from our approach to development with fast feedback cycle, highly-focused personal areas of responsibility and strong tendency to vertical component splitting.

Who we are

Ahrefs runs an internet-scale bot that crawls the whole Web 24/7, storing huge volumes of information to be indexed and structured in a timely fashion. Backend system is powered by a custom petabyte-scale distributed key-value storage to accommodate all that data coming in at high speed. The storage system is implemented in OCaml with thin performance-critical low-level part in C++. On top of that Ahrefs is building various analytical services for end-users.

We are a small team and strongly believe in better technology leading to better solutions for real-world problems. We worship functional languages and static typing, extensively employ code generation and meta-programming, value code clarity and predictability, and are constantly seeking to automate repetitive tasks and eliminate boilerplate, guided by DRY and following KISS. If there is any new technology that will make our life easier - no doubt, we'll give it a try. We rely heavily on opensource code (as the only viable way to build maintainable system) and contribute back, see e.g. https://github.com/ahrefs . It goes without saying that our team is all passionate and experienced OCaml programmers, ready to lend a hand and explain that intricate ocamlbuild rule or track a CPU bug.

Our motto is "first do it, then do it right, then do it better".

What you get

We provide:

  • Competitive salary
  • Informal and thriving atmosphere
  • First-class workplace equipment (hardware, tools)
  • Medical insurance

Locations

Singapore : modern office in CBD

USA : cozy loft in San Francisco downtown

Get information on how to apply for this position.


          Emotional debt   
(Cross posted on Medium) Technical debt is a term used by programmers. Referring to the ever rising cost to projects when short term fixes get applied over time to writing code. Over time, these quick fixes make the overall design inefficient. We can all see how this applies to many projects outside programming. It’s like […]
          (IT) Security Analyst - SIEM tools   

Rate: Market Day Rate   Location: London   

Security Analyst required for 10 week contract in Inner London to develop plans to safeguard computer files against accidental or unauthorised modification, destruction, or disclosure and to meet emergency data processing needs. Confer with users to discuss issues such as computer data access needs, security violations, and programming changes. Monitor current reports of computer viruses to determine when to update virus protection system. Modify computer security files to incorporate new software, correct errors, or change individual access status. Coordinate implementation of computer system plan with establishment personnel and outside vendors. Experience required: Experience working with Security Incident and Event Management (SIEM) tools Significant experience of system operational security, network and/or application security Technical knowledge in security engineering, system and network security, (authentication and security protocols, cryptography), operation of a PKI, and application security Knowledge of system security vulnerabilities and remediation techniques Analytic skills to understand security implications of technical events Extensive troubleshooting and research skills with a positive and proactive approach to customer service and getting things done Strong experience working in an operational role in a secure environment Knowledge of network and web related protocols (eg TCP/IP, UDP, IPSEC, HTTP, HTTPS, routing protocols) Strong Scripting skills in at least one of the following is highly desirable: Ruby, Python, Shell (bash, ksh, csh). Working knowledge of Linux Clearance Level Required: BPSS (DS) - Baseline Personnel Security Standard (with a Disclosure Scotland) IR35 Scope: Outside If deemed inside IR35 - Please note that the client has determined that the off-payroll working rules will apply to this assignment and where a worker elects to provide their services through an intermediary (such as a personal services company) then income tax and primary national insurance contributions will be deducted at source from any payments made to the intermediary. If deemed outside IR35 - Please note that the client has determined that the off-payroll working rules will not apply to this assignment. CV closing date is Friday 30th June at 3.00 pm. GSA Techsource Ltd operates as an Employment Agency when recruiting for permanent vacancies, and an Employment Business when recruiting for contract vacancies. All contract rates quoted are to Ltd companies.
 
Rate: Market Day Rate
Type: Contract
Location: London
Country: UK
Contact: Jackie Dean
Advertiser: GSA Techsource Ltd
Start Date: July 2017
Reference: JSJD/C/16866

          (IT) Security Developer - Cryptography   

Location: Northern Germany   

Security Developer - Cryptography Task: Work in German/Japanese projects with a focus on the development of security and safety functions for In Vehicle Infotainment systems Requirement engineering, architecture and design of the corresponding components Implementation in the team and protection function and quality up to product maturity Skills: Very good degree in (technical) computer science or electrical engineering Experience in embeded Linux, cryptography Professional experience in security, especially 'Secure Linux' necessary Very good C/C ++ programming skills, Self-employed and goal-oriented work, teamwork Very good knowledge of English. Willingness to international project work, travelling (Japan, India)
 
Type: Contract
Location: Northern Germany
Country: Germany
Contact: Simon Gould
Advertiser: Jet Consulting
Email: Simon.Gould.BB38B.0A016@apps.jobserve.com
Start Date: ASAP
Reference: JSSG_SECDEV

          Nine programming recruits new Exec Producer   
Married at First Sight producer Tina Diaz joins Nine programming dept.
          Silicon Labs launches XOs for 100/400G line cards   
Silicon Labs, a supplier of silicon, software and solutions for networking applications, has introduced a new family of crystal oscillators (XOs), the Si54x Ultra Series, that is claimed to offer the lowest jitter frequency-flexible solution on the market.

The new Si54x Ultra Series XOs deliver jitter performance down to 80 femtoseconds (fs) for both integer and fractional frequencies across the entire operating range. The devices provide leading frequency flexibility and jitter margin performance and target demanding applications including 100/200/400 Gbit/s line cards and optical modules, hyperscale data centres, broadband, wireless infrastructure, broadcast video, industrial and test and measurement systems.

Silicon Labs' Si54x Ultra Series XOs are available with single, dual and quad frequency options and offered in an industry-standard 3.2 x 5 mm package, providing drop-in compatibility with traditional XO devices, as well as fast lead times and high reliability.

Silicon Labs noted that its PLL-based approach to oscillators is designed to enable efficient manufacturing and simplified factory programming to reduce lead times compared with custom oscillator products. Silicon Labs claims that this approach allows it to ship samples of any frequency XO within 1 to 2 weeks, and to deliver production quantities wthin four weeks.

The company's new Si54x oscillators employ Silicon Labs' advanced fourth-generation DSPLL technology to provide an ultra-low-jitter clock source at any output frequency. The device can be factory-programmed to any frequency from 200 kHz up to 1.5 GHz with <1 ppb resolution. In addition, on-chip power supply regulation allows noise rejection and enables consistent, reliable low-jitter operation in noisy scenarios such as high-speed networking and data centres.

The Si54x XOs also offer a drop-in replacements for low-jitter surface acoustic wave (SAW)-based oscillators while delivering superior frequency tolerance and temperature stability. The devices provide support for common output formats including LVDS, LVPECL, HCSL, CML, CMOS and Dual CMOS. Samples and production quantities of the Si54x Ultra Series oscillators are available immediately, and Silicon Labs offers a range of free web-based tools to support design and customisation.




          Other Treatment Programs of Note   
Both Hazelden in Minnesota and The Betty Ford Clinic in California are well-respected and prominent treatment centers that, while expensive, do not focus on treatment as a luxury, but rather focus on the very basic tenets of treating the alcoholic/addictive thought and behavioral process. Rules and regulations apply to these centers, no matter how famous and/or wealthy the patients, and the focus is on recovery, not on living in luxury. Money goes toward extremely knowledgeable and highly trained professionals who work with patients/clients to "break down" the addictive though processes and break through denial so that the addict can in fact live a sober life. There are other treatment programs, such as Lakeshore Hospital in Chicago, that offer highly dedicated and trained doctors and social workers, as well as programming for recovering addicts with dual diagnosis. Programs such as this one are far less expensive than those named above, and, if the recovering person is willing, lead to the same end.


For more Substance Abuse tips, visit http://SubstanceAbuse.lifetips.com
          Hourly Paid Teacher in Software Applications Specialist - ACS/AEC - LEA.8F - Vanier College - Vanier, QC   
INTENSIVE DAY PROGRAM – MEQ 12 FOURTH SEMESTER In the following disciplines: 420 Computer Science 420-HSS-VA C++ Programming (90 hours) 420-HST-VA Visual...
From Vanier College - Tue, 27 Jun 2017 17:09:43 GMT - View all Vanier, QC jobs
          Field Service Technician - BellatRx Inc. - Sainte-Anne-de-Bellevue, QC   
Basic knowledge of programming (ex. Located in the Montreal West Island, BellatRx is a leading manufacturer of packaging equipment and complete lines serving a...
From Indeed - Mon, 10 Apr 2017 20:39:15 GMT - View all Sainte-Anne-de-Bellevue, QC jobs
          Product Verification Engineer - Evertz - Ontario   
Proficient with Linux and high level programming or scripting languages such as Python. We are expanding our Product Verification team and looking for...
From Evertz - Fri, 24 Mar 2017 05:42:40 GMT - View all Ontario jobs
          Pac-Land Atari Lynx Programmer Art Music Credits Screen - 10.26.2008   

Pac-Land Atari Lynx Programmer Art Music Credits Screen - 10.26.2008

Pac-Land Atari Lynx Programmer Art Music Credits Screen - 10.26.2008

Programming and art credits from the game Pac-Land for the Atari Lynx Portable Entertainment System. Credit reads: Programming and Art by Joel Seider. Music and Sound by Jason Stephenitch


          Student Activities Officer - Oklahoma State University - Stillwater, OK   
Oversee programming within the Center for Ethical Leadership including the Leader in Residence series and Conclave.... $17.60 - $21.50 an hour
From Oklahoma State University - Tue, 27 Jun 2017 05:36:35 GMT - View all Stillwater, OK jobs
          Atari Lynx WarBirds Programmer Credits Screen - 10.26.2008   

Atari Lynx WarBirds Programmer Credits Screen - 10.26.2008

Atari Lynx WarBirds Programmer Credits Screen - 10.26.2008

Programming Credits Screen in the game WarBirds for the Atari Lynx. Reads: Design & Program By Robert Zdybel


          Checkered Flag Programmed by Eric Ginner and Jerome Strach - 10.25.2008   

Checkered Flag Programmed by Eric Ginner and Jerome Strach - 10.25.2008

Checkered Flag Programmed by Eric Ginner and Jerome Strach - 10.25.2008

Screenshot of programming credits from the game Checkered Flag for the Atari Lynx. Programmers for this game were Eric Ginner and Jerome Strach


          Senior Budget Analyst - Top Secret Clearance   
Arlington, Job Description: The Senior Budget Analyst assists the government in formulating and executing NSD programs and project’s budgets, including assisting the government with all phases of the Planning, Programming, Budget, and Execution (PPBE) process. The Senior Budget Analyst will lead a team of personnel providing this support and will provide Subject Matter Expertise to the client. * Assist the g
          My Week Long Experiment and the Benefits to my Mind and Body   

You're reading My Week Long Experiment and the Benefits to my Mind and Body, originally posted on Pick the Brain | Motivation and Self Improvement. If you're enjoying this, please visit our site for more inspirational articles.

In almost all health and well-being articles I’ve ever read, there’s always one tip that reoccurs every time.  It’s the simplest of things, the easiest advice to follow, and I’m just surprised that more people don’t do it.  It’s not rocket science, it’s not expensive (in fact, it’s pretty much free) and is available to us all. Drink water.

I know, I know!  It can be the most boring thing you can think of when it comes to thirst. First thing in the morning when I’m still on autopilot, I’ve usually made and drunk a large cup of strong coffee before I’m properly awake – I need that rocket fuel to get me going!  But with the warmer weather now upon us, I can have a tendency to feel sluggish, for my feet and ankles to swell when I sit at my office desk for too long, and to suffer with far more headaches than is really acceptable. Talking to my colleagues (who all sit with a sports bottle filled with water on their desks) they all told me I should drink more water.  I could still have the coffee, but I should add drinks of water in-between coffees, or replace one or two of those coffees throughout the day.

Biting the bullet, I decided to conduct a little experiment of my own.  It couldn’t hurt, could it?  A week out of my life?  I pledged to my work colleagues, that for one week, I would drink nothing but water, document my findings as I went, and then give them an honest account of my well-being at the end of the week.  Here’s how I got on…

Day 1

I had to try really hard not to make that coffee.  I really needed coffee.  BUT… I had hot water instead - a little compromise in my mind, as I’m used to having a hot drink.  I won’t lie, it certainly didn’t hit the spot like my usual coffee does.  Throughout the day I consumed the recommended amount.  By the end of day one, I’d drunk over 2 litres!

Day 2

Still craving that early morning coffee!  It was a little more difficult during the day, because I work part time, and this was one of my home days.  I was busy with chores, and so I fell slightly short of the two litres, but I didn’t count it as failure.  If anything the opposite – I’d done 2 whole days without coffee!

Day 3

Woke with a thumping headache!  I put this down to a little caffeine withdrawal. I persevered with the hot water, instead opting to add a little lemon juice. By the end of day 3 I had consumed over 2.5 litres of water! Go me!

Day 4

The temptation of coffee was still there, but I didn’t feel like I ‘needed’ it in the same way as a couple of days before.  Drinking water was almost becoming a habit.  At home I made sure that I set myself little reminders to drink by programming my phone’s alarm to go off every hour, on the hour.  By the end of day 4 I’d consumed another 2.5 litres.  I noticed too that my visits to the bathroom were far more frequent than the days before.  My system really was flushing through!

Day 5

I tend to work all day on a Friday, which means I’m sat on my bottom from 9-5!  I made sure I drank plenty, and got up and moved about at least once every hour.  Leaving the office, I was surprised that my feet were normal size, and that only one of my ankles were ever so slightly puffy.  What a difference!  Toilet visits were more frequent, but I started to feel physically better.  I was getting to sleep earlier, which in turn made me feel brighter in the morning.

Day 6

A Saturday.  Fail!  Not only did I not consume my target 2 litres, but I also went off plan.  I was out for the day, and didn’t prepare adequately.  The craving for something sweet and fizzy got the better of me and I gave in to it and had a lemonade.  Still, once home I stuck to my liquid plan, and got straight back on to water. At least lemonade is a clear liquid, right?

Day 7

Mission complete!  Target consumption met!  I could really see a difference in my overall well-being.  I still peed for England, and not only did I notice a difference in my bladder behaviour, but also my bowels.  Things were ‘easier’.  My headaches became almost non-existent, and I was actually feeling like I had a bit of energy!  My mind-set was more positive, and on the whole, I couldn’t believe how good I was feeling!

I’ve added a day 8 because I just had to share this amazing benefit with you…

Day 8

The day I stepped on the scales.  Perhaps drinking more water had suppressed my appetite a little as I am 3.5lbs lighter! I put it down to water being calorie free!  Whatever the answer, I know that from now on I’ll be carrying on with the water drinking.  It’s not permanently sustainable, as I like a social drink now and again, and I will allow myself the odd coffee – just not to the same extent as before.


Jane works part time, and is also a freelance writer and blogger, who currently writes for Cooleraid. In her spare time she enjoys reading, travel, and chocolate!

You've read My Week Long Experiment and the Benefits to my Mind and Body, originally posted on Pick the Brain | Motivation and Self Improvement. If you've enjoyed this, please visit our site for more inspirational articles.


          START YOUR TINY ENGINES AS ‘MICRO MACHINES WORLD SERIES’ LAUNCHES TODAY   
START YOUR TINY ENGINES AS ‘MICRO MACHINES WORLD SERIES’ LAUNCHES TODAY  Celebrate the Miniature Multiplayer Mayhem Larkspur, Calif. – June 30th, 2017 – Codemasters and Deep Silver have today unleashed miniature multiplayer mayhem on the gaming world with the release of Micro Machines World Series on PlayStation®4 computer entertainment system, Xbox One, the all-in-one entertainment system by Microsoft, and PC via Steam. To celebrate the launch and showcase the fun and carnage you’ll be experiencing in Micro Machines World Series. The iconic series makes a triumphant return with a mixture of fan-favorite and all-new content that will delight players of all ages. Classic game modes Race and Elimination are complimented by an all-new Battle mode, which ramps up the carnage to the highest end of the miniature scale. Supporting up to 12 players for online multiplayer and one to four players locally, Micro Machines World Series gives you 12 amazing customizable vehicles to race and battle across 25 classic locations including the kitchen table, garden, workshop and game room. With spy cars, hovercrafts, dump trucks, tanks and more, Micro Machines World Series lets you equip a unique loadout and collect a range of crazy NERF power ups and collectibles such as blasters, mines, hammers and bombs to get the best of your opponents. Micro Machines World Series combines gaming nostalgia with incredible visuals and endless party replayability, making it a hit for players old and new. Follow updates from the Micro Machines studio on Facebook (www.facebook.com/codemasters.) # # # ABOUT CODEMASTERS: Codemasters, the award winning video game developer and publisher, has a 30 year heritage. With titles distributed globally, Codemasters is a leading developer and publisher of driving and racing entertainment games including DiRT, GRID and the official BAFTA award-winning FORMULA 1 series of videogames. The company is fully controlled by Reliance Big Entertainment Ltd. (RBEL). For more information on Codemasters’ product portfolio, please visit www.codemasters.com. Join in the conversation with @codemasters on Twitter or Like us on Facebook at www.facebook.com/codemasters. ABOUT DEEP SILVER: Deep Silver develops and distributes interactive games for all platforms. The Deep Silver label means to captivate all gamers who have a passion for thrilling gameplay in exciting game worlds. Deep Silver works with its partners to achieve a maximum of success while maintaining the highest possible quality, always focusing on what the customer desires. Deep Silver has published more than 200 games since 2003, including its own brands like the open world extravaganza Saints Row, the zombie action franchise Dead Island, and the grim post-apocalyptic future of the Metro series. Upcoming highlights from Deep Silver include Dead Island 2 and Agents of Mayhem. Deep Silver also owns the development studios Deep Silver Dambuster Studios in Nottingham, UK; Deep Silver Fishlabs in Hamburg, Germany, and Deep Silver Volition based in Champaign, IL, USA. For more information please visit http://www.deepsilver.com/. ABOUT HASBRO: Hasbro (NASDAQ: HAS) is a global company committed to Creating the World’s Best Play Experiences, by leveraging its beloved brands, including LITTLEST PET SHOP, MAGIC: THE GATHERING, MONOPOLY, MY LITTLE PONY, NERF and TRANSFORMERS, and premier partner brands. From toys and games, television programming, motion pictures, digital gaming and a comprehensive lifestyle licensing program, Hasbro fulfills the fundamental need for play and connection for children and families around the world. The Company’s Hasbro Studios creates entertainment brand-driven storytelling across mediums, including television, film and more. Through the company’s commitment to corporate social responsibility, including philanthropy, Hasbro is helping to build a safe and sustainable world and to positively impact the lives of millions of children and families every year. Learn more at www.hasbro.com and follow us on Twitter (@Hasbro & @HasbroNews). MICRO MACHINES, NERF and all related names are trademarks of Hasbro and are used with permission. ©2017 Hasbro. All Rights Reserved. All copyrights or trademarks are the property of their respective owners and are being used under license. Developed and published by Codemasters. “PlayStation”, “PLAYSTATION” and “PS” Family logo are registered trademarks of Sony Computer Entertainment Inc. Trademarks are property of their respective owners. 
          Java Magazine Edition about Libraries    

By Guest Blogger Andrew Binstock 

In an age of frameworks, there still remains a supreme need for libraries, those useful collections of classes and methods that save us a huge amount of work. For all the words spilled on the reusability of object orientation (OO), it’s clear that code reuse has been consistently successful only at the library level. It’s hard to say whether that’s a failure of the promises of OO or whether those promises were unlikely to ever deliver the hoped-for reusability. 

In Stephen Colebourne’s article (page 28), he gives best practices for writing libraries of your own. Colebourne is the author of the celebrated Joda-Time library, which was the standard non-JDK time and date library prior to Java SE 8. In the article, he gives best practices for architecting the library and shares guidelines he has learned along the way that sometimes fly in the face of generally accepted programming precepts. Writing your own library? Then start here

We also examine three well-designed libraries that provide useful functionality but might not be widely known. The first of these is Project Lombok (page 10), which uses annotations to greatly reduce the writing of boilerplate code—leading to fewer keystrokes and much more readable code. Andrés Almiray’s article on the JDeferred library (page 16) is a deep dive into the concepts of futures and promises, which are techniques for defining, invoking, and getting results from asynchronous operations. The built-in Java classes for futures and promises work well but can be difficult to program. JDeferred removes the difficulty and, like Lombok, leads to considerably cleaner code. 

Finally, we revisit an article we ran a year ago on jsoup (page 22), which is one of the finest ways of handling HTML: parsing, scraping, manipulating, and even generating it. 

If libraries are not your favorite topic, we have you covered with a detailed discussion (page 34) of how to use streaming syntax rather than SQL when accessing databases. In addition, we offer our usual quiz (this time with the inclusion of questions from the entry-level exam), our calendar of events, and other goodness. (Note that our next issue will be a jumbo special issue on Java 9.) 


          New Java Champions: Holly Cummins, Aleksey Shipilev, and David Heffelfinger   

Welcome three new Java Champions: Holly Cummins, Aleksey Shipilev, and David Heffelfinger

Holly Cummins has been a Java engineer since 2001. She was one of the core engineers on the IBM J9 JVM working on Garbage Collection (GC) and Just in Time (JIT) compilation. She is currently a technical lead for IBM BlueMix Garage.   

Holly is also a committer and PMC member on the Apache Aries project, which melds the OSGi and Java EE programming models. She created several wearable projects connected to a backend server to demonstrate the low power requirements of modern application servers, and the suitability of Java for embedded application servers.

Holly is the co-author of Enterprise OSGi in Action (Manning). She has published on a range of subjects, from performance myths, garbage collection tuning principles, enterprise OSGi, Java on Raspberry PIs, microservices, automation, and the importance of fun in a development culture. She is a frequent speaker at conferences including Devoxx and JavaOne. Follow her on Twitter @holly_cummins

Aleksey Shipilev is a principal software engineer at Redhat. He is the author of the Java Microbenchmarking Harness (JMH), a project to examine the performance of Java coding constructs.  Prior to JMH, programmers wrote their benchmarking harnesses fraught with errors.  He wrote JCStress, a toolkit for testing concurrency code. He also developed a Java-Object-Layout, JOL, which uses Unsafe, JVMTI, and Serviceability Agent (SA) heavily to decode the actual object layout, footprint, and references. 

Aleksey is now a committer to the new GC project Shenandoah. He is very active on mailing lists like Java Concurrency Interest, JMH, and OpenJDK projects. Follow him on Twitter @shipilev

David Heffelfinger is an independent consultant based in the Washington, DC area. He is a member of the NetBeans Dream Team and is part of the JavaOne content committee. 

David has written 7 books on Java EE, application servers, NetBeans, JasperReports, and Wicket. His titles include Java EE 7 Development with NetBeans 8, Java EE 7 with GlassFish 4 Application Server, and JasperReports 3.5 For Java Developers. 

David has been speaking at JavaOne every year since 2012. He is a frequent speaker at NetBeans Day in San Francisco, showcasing NetBeans features that greatly enhance the development of Java EE applications. Follow him on Twitter @ensode

The Java Champions are an exclusive group of passionate Java technology and community leaders who are community-nominated and selected under a project sponsored by Oracle. Learn more about Java Champions  p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; -webkit-text-stroke: #000000} span.s1 {font-kerning: none} p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial; -webkit-text-stroke: #000000} span.s1 {font-kerning: none}
          Congratulations New Java Champion Oliver Gierke   

Welcome New Java Champion Oliver Gierke

Oliver Gierke is leading the Spring Data project at Pivotal. He is an active member of the JCP expert group on JPA 2.1 and one of the main organizers of the JUG Saxony Day, OOP, JAX and WJAX conferences.

Oliver coined the Spring Data repository programming model which is a widely used Java abstraction to develop data access layers for relational and non-relational databases. This simplifies the way Java developers interact with persistence technologies as Spring Data provides an abstraction over APIs such as JPA. He is one of the leading experts on JPA and other persistence technologies. With Spring Data REST, he helped Java developers implement REST APIs. He also coined the Spring HATEOAS module and helped Java developers use hypermedia elements in REST APIs when using Spring MVC or JAX-RS.

Oliver is a consulting lecturer at the Chair of Software Engineering at TU Dresden helping students to get started with application development in Java. All of his material is available online: http://static.olivergierke.de/lectures/ This makes it easy for student developers to experiment with Java and receive a professional introduction to the language and Java development practices. 

Oliver contributes almost daily to diverse Open Source frameworks on Github, see https://github.com/olivergierke.  He is a frequent speaker at many conferences including BEDcon, OOP, JavaZone, Devoxx, SpringOne, JavaOne, JFokus, Øredev to name a few. Follow him at @olivergierke


          How Much You Need To Expect You'll Pay For A Good click here for more   
Normal position description: Senior application engineers are generally to blame for creating, developing, and working application courses, overseeing related jobs, managing a staff of software engineers, troubleshooting technical problems, and debugging software program. They're normally needed to have working experience with a variety of programming languages. Regardless of improved recognition
          Comment on Directorio by IOI Mystery   
Mystery, David DeAngelo, And Juggler Are All Frauds So, after the notorious Shiva now we have another India wannabe PUA trying to pass himself off as a seduction guru. If it is a weak IOI and I am undecided, I'll go in sluggish... half facing her, will see if she starts to face me or turning to the other aspect, and many others.... I don't always go sturdy as a result of I don't want to get rejected. In mild of this being our store's first foray onto the VMP message boards, I might prefer to go ahead and lengthen a 10% low cost on all RSD sixteen purchases made by way of Wednesday, four/20. I'm not the greatest, but I can not less than make different guys within the group like me. Mystery is a ing bought and anyone who follows him, properly, is getting horrible recommendation. PUA dies for individuals because they be taught recreation and therefore don't need it. I do not want by programming one zero one e-book if I am 5 years deep into my profession as a software engineer (or possibly I do, who knows). If you are getting IOIs (Indications Of Interest, which on this case are body language interest/flirting indicators), she is already attracted to you, so open direct. I could easily write a 600 page memoir about every of 2015 and 2016 - there have been sufficient stories and points of interest (6) However now it simply seems fairly pointless. Our core - our chest, abdomen and waist - is the place we're most vulnerable; exposing it with open physique language is a sign of confidence. As you present a barely angled body to her, find a chance to move barely so that she's dealing with you straight. I don't suppose the PUA crowd has any answer to the problem of how women and men can cease treating each other like shit. This is how it works - order The Jeffy Show and I'll throw in a RSD Mastermind audio assortment full of brand-new 'how one can' material to blast you previous those sticking points.
          CRM on Demand Provides Unique Platform Benefits   

CRM on Demand Provides Unique Platform Benefits

Tinton Falls, NJ -- (ReleaseWire) -- 11/13/2006 -- Commence CRM On-Demand provides breakthrough technology for Manufacturers and distributors with greater functionality and flexibility than traditional application service offerings. Using the industrial strength JAVA (J2EE) platform, Commence CRM On-Demand offers robust functionality, ease of use and limitless scalability. Customization capabilities allow user-defined fields, custom reports, queries, filters; even personalized desktop settings.

Platform Highlights

Enterprise Class Platform
Encrypted Database Security
Automated Processes
One-to-Many Data Relationships
Remote Synchronization
Built-in Report Writer
Multi-level Security
Centralized File management
Mail Merge with MS Office
Web E-Mail Client
Global Search
On-Line Help and Knowledgebase Facility
Support for Handheld Devices
Project Tracking
Group Calendar & Scheduling
E-mail Integration
Web Integration
Application Programming Interface (API)

Platform Benefits include:

Scalable enterprise class platform Flexible architecture that promotes customization and add-on functionality. Operate quickly without IT infrastructure cost. Customizable without the headaches of traditional On-Demand offerings. Integrate people, processes and technology for improved performance and agility.

Commence CRM On-Demand allows manufacturers and distributors to focus on sales efficiency and customer service, monitor and improve business performance and drive higher profits by bringing down cost through streamlining processes.

Commence offers lean industrial companies complete "Freedom Of Choice" to select the solutions and platform that best meets the business requirements of manufacturers and distributors. The comprehensive CRM Industrial application suite is available for use on premise or on-demand as a hosted service. Industrial leaders often build departmental lean CRM solutions with the award winning Commence Lean Industrial CRM Framework. These choices are why so many industrial companies choose Commence as the solution for managing customer relationships. All Commence Industrial solutions support mobile or wireless connectivity and integration to back-office accounting and ERP systems.

For more information on this press release visit: http://www.releasewire.com/press-releases/release-9090.htm

Media Relations Contact

Larry Caretsky
President
Commence
Telephone: 732-380-9100
Email: Click to Email Larry Caretsky
Web: http://www.commence.com/mfg/


          Data Tidying and Visualization with R   
Default thumb Thu, Aug 03 02:00 PM until 03:30 PM Eastern Time (US & Canada)
In this hands-on workshop, we will practice these skills by tidying and visualizing "messy" datasets using the free, open source programming language R.
Location: Instructional Center, 37 Dewey Field Road

          Sustainability Coordinator Americorps VISTA Position - WabiSabi Moab - Moab, UT   
The VISTA will also work closely with the Program Director to develop creative reuse programming.*. The ideal candidate will be *outgoing, creative, flexible,...
From Indeed - Mon, 20 Mar 2017 16:20:52 GMT - View all Moab, UT jobs
          Udemy – A beginners guide to C# Scripting for Unity Game Development   

This is course is for absolute beginners who are both new to Unity game development and C# programming language. C# is widely used for Udemy game development. It is a programming language developed by Microsoft. A lot of famous games have been created using the Unity game engine. They include: Deus Ex: The Fall. Assassin’s […]

The post Udemy – A beginners guide to C# Scripting for Unity Game Development appeared first on GFXDomain Blog.


          Udemy – The Complete LibGDX Game Course Using Java   

What Will I Learn? – Use Java To Solve Complicated Programming Problems – Understand OOP Concepts – Undersand How LibGDX Works – Understand How Box2D Works – Create Menus In LibGDX – Play Music In Your Game – Animate Sprites – Use LibGDX Actions To Program Advanced Game Behavior – Create A Character Select System […]

The post Udemy – The Complete LibGDX Game Course Using Java appeared first on GFXDomain Blog.


          Interactive Priority Tracks for SXSW Conference & PanelPicker Tips   

Want to help shape the SXSW 2018 programming? PanelPicker is your opportunity to enter session proposals for the SXSW Conference […]

The post Interactive Priority Tracks for SXSW Conference & PanelPicker Tips appeared first on SXSW.


          (IT) Java Build and Config Engineer - Banking   

Rate: Negotiable   Location: City of London   

Role: Senior Java Build and Config Engineer - Banking Key Essential Skills Java Configuration Build & DevOps Engineer, SDLC, JERA, TeamCity, TDD, MSAzure, Solid background in automated testing. Investment Banking Knowledge of Apache Stack, Flink, Park, Ignite Outline Thebes Group Thebes Group is a leading UK wide IT Infrastructure Technology Consultancy. We are well-known for our extensive talent pool of highly competent IT professionals and exclusive academy Programmes, which provide a great opportunity to undertake technical training in core disciplines. Thebes work with a number of leading vendors, government, financial institutions and insurance companies including investment banks, brokers and hedge funds. To see our list of core capabilities please click here. Essential Experience Configuration/Build Specialist with extensive DevOps Proven Hands on Java skills including related tooling 5+ years' experience in Software programming languages - JavaScript and C++ to run Flink Experience with scalability and setting up/influencing code optimisation. Experience using Cloud based systems Solid understanding of software development life cycle (SDLC) methodologies such as Waterfall and Agile Experience working within a Financial Sector Role & Responsibilities Work constructively with other team members to discuss and solve technical problems Communicate effectively with other geographically-dispersed teams across the business unit Work in conjunction with Business representatives to understand and evolve business requirements and come up with pragmatic and supportable designs To analyse, design and build any such projects Manage projects through the full project life cycle Handle projects that deals with rating, billing and finance and in certain cases, complex projects require coordination with external systems Thebes provides IT solutions & services differently from most other IT service providers. As an Assured Outcome Provider (AOP), we have spent fifteen years willingly sharing the client's risk with them by focusing on outputs (ie quality service & solutions and return on investment ROI) rather than inputs (ie pricelists and headcount). We do this by fitting our skills, solutions & capabilities to needs, augmenting our staff with enthusiastic professionals from our Academy Programme and remaining flexible as our clients' needs change. Thebes Group is a leading IT services and technology consultancy based in the city of London and Milton Keynes. Thebes work with a number of leading Vendors, Government, Insurance and Financial Institutions including Investment Banks, Brokers, Hedge Funds. Established in 1992, we are a full service provider that is 100% focused on delivering client value. We design, develop and implement leading technology solutions and resources, which help you, run your businesses better. Thebes - Lead by Passion, Driven by Innovation and Dedicated to Results. Thebes may process any personal information supplied
 
Rate: Negotiable
Type: Contract
Location: City of London
Country: UK
Contact: Thebes Group
Advertiser: Thebes IT Solutions Ltd
Start Date: ASAP
Reference: JS-JALJAVA BUILD AND CO

          (IT) WhatsApp ARCHITECT - SIM, IMS MESSAGING APPLICATIONS   

Location: Berkshire   

We have a unique opportunity for a Core Network Architect to work on SIM applications for a major telecoms company based in Berkshire. Must have experience on Voice & Text over Wifi applications like WhatsApp, as well as a deep understanding of SIM integration & standards - UICC/ETSI, Roaming steering, OTA interface etc. Role A passion for design, innovation and continuous improvement Demonstrable ability in critical thinking and problem analysis skills combined with a creative approach to system design. Great stakeholder management and influencing skills to drive our technology business goals and challenge us to do better. Be a great communicator, able to express complex technical concepts in a way that can be easily understood by the intended audience. Experience in technical vendor management Awareness of financial management techniques: investment appraisal, TCO calculation, cost to serve modelling, and CAPEX/OPEX forecasting & control. Expert level knowledge across a range of domains: Voicemail, MMS, RCS, OTA SIM management, Roaming Steering, Device Management, SMSC, IP-SM GW, and IMS messaging solutions (Voice & Text over WiFi). Experience of successful end-to-end messaging service design, delivery, integration and in-life system design ownership within a hybrid circuit-switched and IMS context. A track record of successful messaging project delivery A good understanding of operational support issues associated with messaging services. Expert level understanding of the relevant areas of the following standards: MAP, SIP, SMPP, UCP, MM1-MM7, IMAP, SMTP, Diameter, LDAP, SOAP, CORBA, OMA-DM, OMA-CP, UICC Nice to have: Experience of design & deployment of virtualised telco applications in a cloud environment Wider knowledge of mobile/IMS core systems, and service layer VAS Experience in.nix Scripting and common web-layer programming languages: Perl, Python, Ruby, Java An appreciation of design, development, and configuration of mobile applications, particularly in the integration of messaging apps with core network functions (eg Whatsapp). Project People Ltd is acting as an Employment Business in relation to this vacancy.
 
Type: Contract
Location: Berkshire
Country: UK
Contact: Robert Hudson
Advertiser: Project People
Start Date: ASAP
Reference: JS-ARCH-SIM/BERK/ROB

          (IT) Senior Java Build and Config Engineer - Banking   

Rate: Negotiable   Location: City of London   

Key Essential Skills Java Configuration Build & DevOps Engineer, SDLC, JERA, TeamCity, TDD, MSAzure, Solid background in automated testing. Investment Banking Knowledge of Apache Stack, Flink, Park, Ignite Outline Thebes Group Thebes Group is a leading UK wide IT Infrastructure Technology Consultancy. We are well-known for our extensive talent pool of highly competent IT professionals and exclusive academy Programmes, which provide a great opportunity to undertake technical training in core disciplines. Thebes work with a number of leading vendors, government, financial institutions and insurance companies including investment banks, brokers and hedge funds. Essential Experience Configuration/Build Specialist with extensive DevOps Proven Hands on Java skills including related tooling 10+ years' experience in Software programming languages - JavaScript and C++ to run Flink Experience with scalability and setting up/influencing code optimisation. Experience using Cloud based systems Solid understanding of software development life cycle (SDLC) methodologies such as Waterfall and Agile Experience working within a Financial Sector Role & Responsibilities Work constructively with other team members to discuss and solve technical problems. Mentoring and coaching Communicate effectively with other geographically-dispersed teams across the business unit Work in conjunction with Business representatives to understand and evolve business requirements and come up with pragmatic and supportable designs To analyse, design and build any such projects Manage projects through the full project life cycle Handle projects that deals with rating, billing and finance and in certain cases, complex projects require coordination with external systems Thebes provides IT solutions & services differently from most other IT service providers. As an Assured Outcome Provider (AOP), we have spent fifteen years willingly sharing the client's risk with them by focusing on outputs (ie quality service & solutions and return on investment ROI) rather than inputs (ie pricelists and headcount). We do this by fitting our skills, solutions & capabilities to needs, augmenting our staff with enthusiastic professionals from our Academy Programme and remaining flexible as our clients' needs change. Thebes Group is a leading IT services and technology consultancy based in the city of London and Milton Keynes. Thebes work with a number of leading Vendors, Government, Insurance and Financial Institutions including Investment Banks, Brokers, Hedge Funds. Established in 1992, we are a full service provider that is 100% focused on delivering client value. We design, develop and implement leading technology solutions and resources, which help you, run your businesses better. Thebes - Lead by Passion, Driven by Innovation and Dedicated to Results. Thebes may process any personal information supplied in relation to your application. By providing your information, you consent to Thebes using
 
Rate: Negotiable
Type: Contract
Location: City of London
Country: UK
Contact: Thebes Group
Advertiser: Thebes IT Solutions Ltd
Start Date: ASAP
Reference: JS-JALSENIOR JAVA BUILD

          (IT) Hadoop Architect/Developer   

Location: Foster City, CA   

Key Responsibilities: Visa is currently seeking for a Senior Hadoop Architect/Developer with extensive experience in RDBMS data modelling/dev with Tableau developer experience in Finance area to deliver Corporate Analytics new strategic framework initiative. This BI platform provides analytical/operational capability to various business domains that are to be used by Corporate Finance Systems. This Developer role will be primarily responsible for designing, developing and implementing Hadoop framework ETL using relational databases and use Tableau reporting on it. The new Hadoop framework to be used to build from the scratch Oracle Financial analytics/P2P/Spend/Fixed asset solution into Hadoop framework from OBIA. The individual should have a finance business background with extensive experience in OBIA Fixed Assets, P2P, Financial analytics, Spend Analytics, and Projects. Expert in Hadoop framework components like Sqoop, Hive, Impala, Oozie, Spark, HBase, HDFS.. " Architect, Design and implement column family schemas of Hive and HBase within HDFS. Assign schemas and create Hive tables. Managing and deploying HDFS HBase clusters. " Develop efficient pig and hive scripts with joins on datasets using various techniques. Assess the quality of datasets for a hadoop data lake. Apply different HDFS formats and structure like Parquet, Avro, etc. to speed up analytics " Fine tune hadoop applications for high performance and throughput. Troubleshoot and debug any hadoop ecosystem run time issues " Hands on experience in configuring, and using Hadoop ecosystem components like Hadoop MapReduce, HDFS, HBase, Hive, Sqoop, Spark, Impala, Pig, Oozie, Zookeeper and Flume. " Desired candidate should have strong programming skills on Scala or Python to work on Spark " Experience in converting core ETL logics using PySpark SQL or Scala language " Good experience on Apache Hadoop Map Reduce programming, PIG Scripting and Distribute Application and HDFS. " In-depth understanding of Data Structure and Algorithms. " Experience in managing and reviewing Hadoop log files. " Implemented in setting up standards and processes for Hadoop based application design and implementation. " Experience in importing and exporting data using Sqoop from HDFS to Relational Database Systems and vice-versa. " Experience in Object Oriented Analysis, Design (OOAD) and development of software using UML Methodology, good knowledge of J2EE design patterns and Core Java design patterns. " Experience in managing Hadoop clusters using Cloudera Manager tool. " Very good experience in complete project life cycle (design, development, testing and implementation) of Client Server and Web applications " Experience in connecting Hadoop framework components to Tableau reporting " Expert in Tableau data blending and data modeling. " Create Functional and Technical design documentation " Perform Unit and QA testing data loads and development of scripts for data validation " Support QA, UAT, SIT and
 
Type: Contract
Location: Foster City, CA
Country: United States of America
Contact: Baljit Gill
Advertiser: Talentburst, Inc.
Reference: NT17-11842

          (IT) Java Tech Specialist/Developer/Engineer   

Location: Belfast, Northern Ireland   

Java Tech Specialist/Developer/Engineer This is a challenging and exciting opportunity to work within a leading banking environment and work closely with a Front Office business unit. The quality trading is now enhancing our leading position in the financial market. The successful candidate will play a key role in that success and be part of a large group of high calibre developers. The successful candidate must be able to operate with a high level of self-motivation and produce results with a quick turn around on key deliverable's. Key Responsibilities: Requirements analysis and capture, working closely with the business users and other technology teams to define solutions. Development of the Electronic Execution applications and components, as part of a global development effort. Liaison with support and development teams. Third line support of the platform during trading hours. Applying Equities financial product knowledge to the full development life cycle. Defining and evolving architectural standards; promoting adherence to these standards. Technical mentoring of junior team members. Knowledge and Experience: Strong Java Background Unix/Linux OO programming Good relational database experience Working SQL knowledge We have both permanent and contract positions available so please do not hesitiate to apply If you apply for this role, our thanks for your interest. However, due to high level of applicants expected we are unable to respond to every one. Therefore, if you have not heard from Eurobase People within 5 working days, then, unfortunately, your application has been unsuccessful. Eurobase People are acting as an Employment Agency.
 
Type: Unspecified
Location: Belfast, Northern Ireland
Country: UK
Contact: Adam Cohen
Advertiser: Eurobase People
Email: Adam.Cohen.F5223.39364@apps.jobserve.com
Start Date: ASAP
Reference: JS-TS

          (IT) Web UI Developer - Javascript JAVA Angular React backbone ECMA Agile - Investment Bank   

Rate: £600 - £650 per Day   Location: London   

Web UI Developer - Javascript JAVA Angular React backbone ECMA Agile - Investment Bank A talented Web UI and Java developer to join a small agile team for an interesting project within a Top Tier Investment Bank. You must have a good knowledge and understanding of modern JavaScript development, Java development, UI design, a keen eye for detail, a strong focus on automated testing and a relentless drive for simplicity. The team is small, has a large degree of autonomy, a large degree of self-discipline and are focused on delivering working software. Project tech stack is Server Side Java, REST, ElasticSearch, Angular, HTML5/CSS, Selenium/Webdriver and the typical modern development/automation tools. Experience of the entire development life cycle within Java projects from architecture through to maintenance. Experience on High performance Java development and the Java framework and its interoperability mechanisms. Multi-threaded approaches and practical experience in profiling and optimising highly concurrent codebases. Experience of delivering high performance, low latency systems. Knowledge of programming best practices, design patterns etc Ability to deliver quality code using test driven development and agile practises. Provide simple solutions to complex problems. You do not need to come from an investment banking background, but you need to be passionate about development, and able to work with a large degree of autonomy, when required. Role: The role will involve working as part of a small agile team, working closely with other IT teams as well as the Front Office and other stakeholders. The Java Developer will be expected to be flexible working on solutions across all impacting areas, creating new services as well as maintaining and enhancing existing services.. This role involves development of leading edge solutions across the department. The role involves providing 3rd level support, liaising either with the support team or with the business directly. Adlam Consulting operates as an Employment Agency & an Employment Business
 
Rate: £600 - £650 per Day
Type: Contract
Location: London
Country: UK
Contact: Adlam Consulting Ltd
Advertiser: Adlam Consulting Ltd
Email: Adlam.Consulting.EE8C4.A5193@apps.jobserve.com
Start Date: ASAP
Reference: JSADL02712

          Dynamics AX Consultant - Alteo Inc. IT Recruiting Services - Montréal, QC   
Alteo is looking for a Dynamics AX Consultant for a 12 month contract based in Montreal. Analysis, design, programming, troubleshooting and commissioning....
From Alteo Inc. IT Recruiting Services - Wed, 21 Jun 2017 20:58:49 GMT - View all Montréal, QC jobs
          WIN the Top 50 Must See Movies Before the Age of 11   

The guide to the 50 films every child should see before they grow up has been created by film education charity Into Film, in partnership with the UK video industry, which will see all 50 films distributed by retailers this summer! As a family that loves great movies this is certainly exciting for us and we intend to watch one a day over the school holiday... there are currently just 8 from the list we haven't seen before so we're doing well.





Each film was measured against a series of metrics, from the impact of the movie on a child’s intellectual, educational and emotional development, through to suitability for family viewing plus overall entertainment and nostalgia factor. The judging panel, led by Into Film’s education and programming teams who specialise in curating film content and developing teaching resources for schools across the UK, narrowed down the selection of films to a shortlist of 250 from a catalogue of over 3,000 family movies.

The shortlist then lead to the final 50 films in the selection, which feature a range of past and current films that have been deemed to benefit child development and creativity. Our favourites from the list include Jumanji, How To Train Your Dragon and Matilda.



The list of 50 Must See Movies Before You Grow Up are revealed (in alphabetical order) is:

101 Dalmatians
Jumanji
The Gruffalo
A Little Princess
Kubo and the Two Strings
The Iron Giant
Annie
Mary Poppins
The Jungle Book
Babe: The Gallant Pig
Matilda
The LEGO Movie
Beauty and the Beast
Nanny McPhee
The Lion King
Cloudy with a Chance of Meatballs
Night at the Museum
The Lorax
Coraline
Oliver!
The Never-Ending Story
Diary of a Wimpy Kid
Paddington
The Princess Bride
Dumbo
Secret Life of Pets
The Secret Garden
E.T. The Extra Terrestrial
Shaun The Sheep Movie
The Witches
Fantastic Mr Fox
Shrek
Toy Story
Free Willy
Space Jam
Trolls
Frozen
Spirited Away
Up!
Home
Star Wars: A New Hope
Wallace and Gromit: The Curse of the Were-Rabbit
Hook
Swallows and Amazons
Willy Wonka and The Chocolate Factory
Hotel Transylvania
The Adventures of TinTin
Zootropolis
How To Train Your Dragon
The BFG


And you can win them all...





For your chance to WIN all 50 movies you can enter via the Gleam entry form below.

Leaving a comment is mandatory but there are additional entry methods available for bonus points.

The giveaway ends at 11.59pm GMT on 18th July 2017.


Good luck!

Image Map


          Membership Advisor - In-Shape Health Clubs - Bakersfield, CA   
Be knowledgeable about all programming, club activities, promotions and timelines. Membership Advisors are fitness enthusiasts who are front line business...
From In-Shape Health Clubs - Tue, 27 Jun 2017 17:34:39 GMT - View all Bakersfield, CA jobs
          Silicon Valley's Influence on Public Education | Truth in American Education   
Silicon Valley's Influence on Public Education | Truth in American Education:

Silicon Valley's Influence on Public Education 



The New York Times published an interesting article about how Silicon Valley companies have pushed coding into public schools.
Natasha Singer writes:
At a White House gathering of tech titans last week, Timothy D. Cook, the chief executive of Apple, delivered a blunt message to President Trump on how public schools could better serve the nation’s needs. To help solve a “huge deficit in the skills that we need today,” Mr. Cook said, the government should do its part to make sure students learn computer programming.
“Coding,” Mr. Cook told the president, “should be a requirement in every public school.”
The Apple chief’s education mandate was just the latest tech company push for coding courses in schools. But even without Mr. Trump’s support, Silicon Valley is already advancing that agenda — thanks largely to the marketing prowess of Code.org, an industry-backed nonprofit group.
This push coincides with corporations’ interest in public education and a shift to a focus onSilicon Valley's Influence on Public Education | Truth in American Education: 

          Sony Reveals Internet-Based TV Service In US   
Sony says it will start an Internet-based TV service in the U.S. this year, offering a mix of live TV programming and video on demand.
          This blog has been moved to https://medium.com/@anirugu   

Originally posted on: http://geekswithblogs.net/anirugu/archive/2017/05/13/this-blog-has-been-moved-to-httpsmedium.comanirugu.aspx

Hello everyone,

Good evening !

It’s my pleasure to use this blog to write stuff about technical stuff and things that I do or use in my daily life. This blog have a lot of technical issue in past. It’s not work properly.

 

Many time I click on publish button and it was not working. I see on those days nothing has been published on last many hours  on whole website.

 

I am moving my blog to https://medium.com/@anirugu for my future post subscribe me on my new address. I am currently focusing on .NET Web & Desktop programming.

I hope We can do in future. If you have any feedback don’t hesitate to tweet to me https://twitter.com/anirugu

 

Happy coding Smile


          CG Artist - Creature FX TD - Rodeo FX - Canada   
Excellent knowledge of Maya. Programming experience with C++ for Maya and Houdini plug-ins, an asset. Position in Montreal and Quebec City....
From Rodeo FX - Fri, 24 Mar 2017 22:47:18 GMT - View all Canada jobs
          C++ Developer - Distributed Computing - Morgan Stanley - Montréal, QC   
Comfortable programming in a Linux environment, familiar with ksh and bash. Morgan Stanley is a global financial services firm and a market leader in investment...
From Morgan Stanley - Wed, 28 Jun 2017 00:14:01 GMT - View all Montréal, QC jobs
          Activity Assistant - Good Samaritan Society - Pine River, MN   
Provides activities that meet residents’ needs. • Assists in developing plans for programming that meets residents’ needs. Assists in evaluating effectiveness
From Good Samaritan Society - Thu, 04 May 2017 18:18:47 GMT - View all Pine River, MN jobs
          Grade 4/5 Teacher - Valley View Community School (Beauval) - Northern Lights School Division - Valley View, BC   
It is located in Beauval, Saskatchewan and provides educational programming for approximately 281 students. NLSD #113 invites applications for the position of a...
From Northern Lights School Division - Fri, 30 Jun 2017 21:07:19 GMT - View all Valley View, BC jobs
          Type-Safe HTML in Swift   
Brandon Williams: An alternative approach to views is using “embedded domain specific languages” (EDSLs). In this approach we use an existing programming language (e.g. Swift), to build a system of types and functions that models the structure of the domain we are modeling (e.g. HTML).[…]We can use the type system to provide safety around how […]
          Perangkat Lunak Komputer (Software)   
Perangkat Lunak (software) merupakan suatu program yang dibuat oleh pembuat program untuk  menjalankan perangkat keras komputer. Perangkat Lunak adalah program yang berisi kumpulan instruksi untuk melakukan proses pengolahan data. Software sebagai penghubung antara manusia sebagai pengguna dengan perangkat keras komputer, berfungsi menerjemahkan bahasa manusia ke dalam bahasa mesin sehingga perangkat keras komputer memahami keinginan pengguna dan menjalankan instruksi yang diberikan dan selanjutnya memberikan hasil yang diinginkan oleh manusia tersebut.
Perangkat lunak komputer berfungsi untuk :
  1. Mengidentifikasi program
  2. Menyiapkan aplikasi program sehingga tata kerja seluruh perangkat komputer terkontrol.
  3. Mengatur dan membuat pekerjaan lebih efisien.
Macam-macam Perangkat Lunak :
  1. Sistem Operasi (Operating System),
  2. Program Aplikasi (Application Programs),
  3. Bahasa Pemrograman (Programming Language),
  4. Program Bantu (Utility)
1.  Sistem Operasi (Operating System)
Sistem Operasi yaitu program yang berfungsi untuk mengendalikan sistem kerja yang mendasar sehingga mengatur kerja media input, output, tabel pengkodean, memori, penjadwalan prosesor, dan lain-lain. Sistem operasi berfungsi sebagai penghubung antara manusia dengan perangkat keras dan perangkat lunak yang akan digunakan. Adapun fungsi utama sistem operasi adalah :
  • Menyimpan program dan aksesnya
  • Membagi tugas di dalam CPU
  • Mengalokasikan tugas-tugas penting
  • Merekam sumber-sumber data
  • Mengatur memori sistem termasuk penyimpanan, menghapus dan mendapatkan data
  • Memeriksa kesalahan sistem
  • Multitugas pada OS/2″, Windows ’95″, Windows ’98″, Windows NT”, /2000/XP
  • Memelihara keamanan sistem,   khusus pada jaringan yang membutuhkan kata sandi (password) dan penggunaan ID
Contoh Sistem Operasi, misalnya : Disk operating System (DOS), Microsoft Windows, Linux, dan Unix.
2.  Program Aplikasi (Aplication Programs)
Program Aplikasi adalah  perangkat lunak yang dirancang khusus untuk kebutuhan tertentu, misalnya program  pengolah kata, mengelola lembar kerja, program presentasi, design grafis, dan lain-lain.
3. Bahasa Pemrograman (Programming Language)
Perangkat lunak bahasa yaitu program yang digunakan untuk menerjemahkan instruksi-instruksi yang ditulis dalam bahasa pemrograman ke bahasa mesin dengan aturan atau prosedur tertentu, agar diterima oleh komputer.
Ada 3 level bahasa pemrograman, yaitu :
  • Bahasa tingkat rendah (low level language)
Bahasa ini disebut juga bahasa mesin (assembler), dimana pengkodean bahasanya menggunakan kode angka 0 dan 1.
  • Bahasa tingkat tinggi (high level language)
Bahasa ini termasuk dalam bahasa pemrograman yang mudah dipelajari oleh pengguna komputer karena menggunakan bahasa Inggris. Contohnya : BASIC, COBOL, PASCAL, FORTRAN.
  • Bahasa generasi keempat (4 GL)
Bahasa pemrograman 4 GL (Fourth Generation Language) merupakan bahasa yang berorientasi   pada objek yang disebut Object Oriented Programming (OOP). Contoh software ini adalah : Visual Basic, Delphi, Visual C++
4. Program Bantu (Utility)
Perangkat Lunak merupakan perangkat lunak yang berfungsi sebagai aplikasi pembantu dalam kegiatan yang ada hubungannya dengan komputer, misalnya memformat disket, mengopi data, mengkompres file, dan lain-lain.
Contoh software ini diantaranya :
  • Norton Utility
  • Winzip
  • Norton Ghost
  • Antivirus

          Useful and entertaining info for any online daters out there - 1080p   

Release Year: 2017
Video language: English

Naked News is the only fully nude news program of its kind in the world that is real news, breaking news, sports, weather, entertainment and infotainment programs delivered by a roster of completely naked, attractive and intelligent women. But hot women stripping, nude nude weather girls, nude news, nude sports and nude entertainment is not all Naked News is about. It features beautiful nudes starring in amateur auditions, nude celebrity models and our famous Naked in the Street interviews. Nude women reporting all the nude news you need to know to be informed and entertained at the same time.
Very simply, Naked News is unique, there is nothing like it anywhere. The Naked News program is considered to have the best quality stunning HD videos on the Internet encoded in multiple formats. They produce their exclusive programming 6 days per week. Naked News is not just another program with nude women. For over 14 years, they've been bringing their audience the best worldwide infotainment program - naked.

Format: mp4
Duration: 19:26
Video: 1920x1080, AVC (H.264), 4673kbps
Audio: 93kbps





File size: 680.2 MB






          Master Ada Programming with Free Books   
none
          Master Bash Programming with Free Books   
none
          It's Interesting: DDOS   
DDOS is an interesting thing. Imagine: thousands of computers attacking your business internet facing servers, taking down your servers or your filling your bandwidth capacity to 100%. All through programming (or a DDOS attack). You can imagine many countries stacking a single country with their military, how that might turn out. It's pretty much the same for the victim of a DDOS attack.
The god thing is that ISPs are offering some type of scrubbing of traffic for this. However, so far, I have not seen a solution that is really good. Maybe in the future they will come up with something without manual intervention.
          Learn Lisp Programming with Free Books   
none
          Learn all about VimL Programming And Vim with Free Books   
none
          Become Competent in OCaml Programming with Free Books   
none
          Learn Scala Programming with Free Books   
none
          Master Haskell Programming with Free Books   
none
          How to Set Up Git Version Control For Your Drupal Website   
How to Set Up Git Version Control For Your Drupal Website
git-version-control
David Csonka Mon, 01/30/2017 - 05:01

Having version control for your Drupal website is an incredibly useful tool. It not only benefits the programming workflow if you are are involved with custom module development, but also is beneficial if your primary concern is just support for Drupal core and module updates.

Version control helps make it easier to deploy new code, keep track of changes in your code, and if there are problems, to roll back your code to the previous version from before the error came about. If you are using applying updates or changes directly to your code (definitely a bad idea for a live website) not having version control in place can make rolling back changes very laborious and could potentially introduce even more errors.

"Git" With the Program!

Git is a popular version control system that is used extensively throughout the open source web development community.

You can download Git easily from this webpage: http://git-scm.com/downloads with additional information about how to install Git provided here: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git.

Now, it's one thing to just install Git, but it's another thing to make use of version control like Git in a way that is beneficial to your workflow, and helps keep your Drupal websites in good working order during updates. Here are some guidelines to help you along the way.

1. Set up a central or remote repository to work off of. A repository is a term for a contained set of files and commit objects for a Git controlled project. It is like a history of the changes made to the project over time. By having a remote repository to act as your official source (perhaps at a provider like BitBucket.org) it can function as a sort of backup for your code. Additionally, it can be helpful as the transition space to provide for moving your project and it's code between different server environments, like with a Dev->Staging->Production workflow.

2. Use forks and branches so that you aren't always immediately pushing changes to your primary repository. Sometimes you may want to test changes and it could take a little way to do that, but in the meantime, an important emergency patch needs to be applied. If you are constantly pushing changes to your primary repository, the one you use to update your production website, then you may get in a situation where you have to pull in changes that you aren't ready to deploy yet.

You can learn more about Git "branches" and a "forking workflow" with these helpful tutorials (branches) and (forking) and a more advanced fork/pull-request workflow for teams .

One of the most important things to remember is that while version control can help you out in a tough situation by making it easier to rollback or update code, it won't actually make sure your code is well formulated or your patches don't create other problems. Always be sure to test your updates thoroughly.

 

Need more help working with version control?

We might be able to help you! Contact Us


          Software Developer - Cantest - Canada   
C++, COM / COM+ / DCOM / MTS / ActiveX, DHTML, XML Technology (XSL,XSD,DTD), Java Script, CSS, Object-Oriented programming languages, SQL, Visual C++ / MFC....
From Cantest - Tue, 30 May 2017 06:32:06 GMT - View all Canada jobs
          Linux/Windows Software Support Engineer - Weymouth - SC Cleared / Square One Resources / Weymouth, Dorset, United Kingdom   
Square One Resources/Weymouth, Dorset, United Kingdom

Linux/Windows Software Support Engineer - Weymouth - SC Cleared

Square One are looking for a Linux/Windows Software Support Engineer to come on board for a 3 month contract based in Weymouth.

The Purpose of the Role:

Support the software development teams for the configuration, customization and administration of the Operating Systems (Linux/Windows) and virtualisation environment of the development, test and target platforms in use for delivering large solutions. As a secondary purpose, to support the teams in designing and programming functionalities for the final software solution during administration activities down time.

Essential

Educated to Degree level or equivalent in software, computer science or software related discipline

Certified Linux (RHEL) administrator with at least 3 years' experience

Certified Windows Administrator with at least 3 years' experience

A minimum of 3 years' experience in the following areas:

o Virtualisation platforms using hypervisors/VMs in a multi-OS configuration (Linux/Windows)

o Fine customisation of VMs in a complex networking environment

o PC-Over-IP in virtualised environment

o Network and switch configuration/administration

Experience with Packer and Vagrant.

An understanding of software design methodologies (UML) and programming languages (C++ or Java)

Self-starter and able to learn on the fly

The successful candidate must be capable of achieving security (SC) clearance as a minimum

Desirable

Exposure to Data Distribution Service (DDS)

Commercial experience of UML and OO design methodologies

Commercial experience of Real Time designs, programming concepts and design patterns.

Proficiency in high level programming language (C++ or Java).

Experience of specification development, verification and validation.

Experience of line management or mentoring

Background in defence

Undertake all administration activities for the development, test and target environments of large projects covering:

o Operation Systems administration (Linux/Windows)

o Virtualisation platform configuration (hypervisor, Virtual Machine )

o Networking aspects (Switches, drivers, TCP or UDP IP )

o PC-Over-IP configuration

Contribute to the definition of the system network and topology configuration in support of the software architect.

When required on projects, design, code and unit test software in accordance with the company's procedure and project specific requirements.

Estimate the hours and duration required for own tasks.

Support planning input to project schedules and deliver own work commensurate with those plans.

Contribute information to project reports.

Share Linux/Virtualisation/Networking expertise with the rest of the development team.

This is a 3 month contract based in Weymouth starting immediately.

Linux/Windows Software Support Engineer - Weymouth - SC Cleared

Employment Type: Contract
Duration: 3 months
Other Pay Info: Market rates

Apply To Job
          ANDROID DEVELOPER (Android, SDK, OO design) / Axica Recruitment / Telford, Shropshire, United Kingdom   
Axica Recruitment/Telford, Shropshire, United Kingdom

ANDROID DEVELOPER (Android, SDK, OO design,)

Salary DOE GBP 25-45k benefits, potential work from home! Bonus,

Based in Telford

My client is a well- establish retail business operating in the market for c.10 years now. Due to the new client acquisition and recent growth they are looking to bring on board 2 mobile app developers. They are currently working across various entertainment sectors like electronics, mobile books and more.

Role: working in a team of 15 developers you will be:

* Specify and develop software applications in Android

* Ensure consistent and professional delivery of user requirements.

* Where appropriate integrate third party systems.

* Forms part of project teams for the delivery of specific projects.

* Ensure rigorous testing regimes are conducted.

* Liaise with the Technical Websites Manager to ensure testing and implementation take place with the businesses full co-operation

Opportunity

Growth is ongoing resulting from new client acquisition. Great opportunity for a candidates who are looking to grow and keep up to date on the latest industry trends in the mobile technologies. You will be part of growing team -15 Developer, 2 app developer. This is great opportunity for an Android developer looking to grow their skill set and joining well established company.

Essential skills

* developing and shipping native apps on Google Play & App Store

* Proficient OO design and programming skills in Java

* Familiarity with the Android SDK Familiarity with Xcode & Android Studio or Eclipse

* Experience on web service integration (REST, JSON, XML, etc)

For immediate consideration and to hear more about this opportunity please apply below or forward your C.V ASAP (see below) or call

Employment Type: Permanent

Pay: 25,000 to 45,000 GBP (British Pound)
Pay Period: Annual

Apply To Job
          Android Developer / Spectrum IT Recruitment (South) Ltd / Basingstoke, Hampshire, United Kingdom   
Spectrum IT Recruitment (South) Ltd/Basingstoke, Hampshire, United Kingdom

Android Developer required to join my client a leading global company in Basingstoke.

My client is looking for a highly experienced Android Developer to be a productive member of their talented App development team that designs, builds, tests, delivers and supports their growing native App-based products and services.

As the Android Developer you will be working on a global App range adding innovative new features as well as fixing existing software bugs and creating new Apps for their ever growing market sectors.

You will be working in a friendly and relaxed environment and they will encourage creativity and enquiring minds who keep up to date on the latest changes in the Android operating system.

Skills Required for Android Developer:

Programming Java for Android applications

Strong knowledge of Android SDK

Experience with offline storage, threading and performance tuning

Developing in a Windows Environment using Eclipse or equivalent.

Desirable Skills:

Strong knowledge of Android UI design principles, patterns and best practices

Integration of web APIs

Experience of source control software ideally Git

Secure coding experience

This is a very interesting environment to work in with some great projects on offer for you to be involved in which will increase your technical scope and give you an opportunity to learn and grow.

As Android Developer you can expect as of up to £50,000 + Bonus, 25 days holiday, medical and more.

If you have the skills required then please send your CV (see below) or call Lucy

Employment Type: Permanent

Pay: 40,000 to 50,000 GBP (British Pound)
Pay Period: Annual
Other Pay Info: Bonus and Benefits

Apply To Job
          Principle Software Engineer - Interactive Online Education   
Boston, If you have 10+ years of object oriented programming experience combined with strong problem solving skills and you're looking for your next great career opportunity in the Downtown Boston area with an online educational content provider. then this message is for you!! We've been publishing educational content for 100+ years and the core component of our business has changed with the direction and
          Principle Software Engineer - Interactive Online Education   
New York, If you have 10+ years of object oriented programming experience combined with strong problem solving skills and you're looking for your next great career opportunity in the Lower East Side, NYC area with an online educational content provider. then this message is for you!! We've been publishing educational content for 100+ years and the core component of our business has changed with the directio
          Principle Software Engineer - Interactive Online Education   
Itasca, If you have 10+ years of object oriented programming experience combined with strong problem solving skills and you're looking for your next great career opportunity in the Itasca, IL area with an online educational content provider. then this message is for you!! We've been publishing educational content for 100+ years and the core component of our business has changed with the direction and impl
          Principle Software Engineer - Interactive Online Education   
IL-Itasca, If you have 10+ years of object oriented programming experience combined with strong problem solving skills and you're looking for your next great career opportunity in the Itasca, IL area with an online educational content provider. then this message is for you!! We've been publishing educational content for 100+ years and the core component of our business has changed with the direction and impl
          Principle Software Engineer - Interactive Online Education   
MA-Boston, If you have 10+ years of object oriented programming experience combined with strong problem solving skills and you're looking for your next great career opportunity in the Downtown Boston area with an online educational content provider. then this message is for you!! We've been publishing educational content for 100+ years and the core component of our business has changed with the direction and
          An adventure with clocks, component, and clojure.spec   

I have long parted with my initial, lacking approach to component handling in Clojure. I now rely on Stuart Sierra’s component library for this.

In this short post, I want to showcase how this library helps structure code around clear functional boundaries and allows testing without having to depend on mocking. This might induce building components for seemingly innocuous code. I will also dive into clojure.spec to show how it helps writing automated tests on top of correct generated inputs.

This article was initially written as a litterate programming org mode file, If you edit the source you can use C-c v t to generate a single file which can be used as an executable *boot* script, which means you will need to have boot installed in order to execute this.

I used *boot* here because it is easy to build a standalone executable script with it. Be sure to have BOOT_CLOJURE_VERSION set to 1.9.0-alpha14, since clojure.spec is only available from 1.9.0 onward.

To start we will add a shebang line to make sure that boot is invoked to run this script.

#!/usr/bin/env boot

For the purpose of this article, we will only use a few dependencies:

(set-env! :dependencies '[[com.stuartsierra/component "0.3.1"]
                          [org.clojure/test.check     "0.9.0"]])

For the purpose of this article, we will be building request signing functionality. Since this is a standalone *boot* project test namespaces are pulled here as well:

(ns request.signing
   (:require [com.stuartsierra.component :as component]
             [clojure.test :refer :all]
             [clojure.test.check.generators :as tgen]
             [clojure.spec :as s]
             [clojure.spec.gen :as gen]
             [clojure.spec.test :as st])
   (:import javax.crypto.Mac javax.crypto.spec.SecretKeySpec))

Our request signing functionality will work on incoming requests which look like this:

{:timestamp     1483805460         ;; UNIX Epoch of request
 :payload       "some-command"     ;; Request payload
 :authorization {:key       "..."
                 :signature "..."}}

Provided each user is given an API key, and an API secret, we can define the request signing mechanism to be:

signature = hexadecimal_string(hmac_256(secret-key, timestamp + payload))

Factoring the request timestamp in the signing mechanism provides a good protection against replay attacks: by ensuring that requests come-in within a reasonable time-delta (let’s say 500ms). To implement this a first implementation could be based on two components:

  • A *keystore* component which maps API keys to API secrets
  • A *signer* component which signs a payload

We can do away with the *keystore* component here, rely on a map, or something that behaves like a map. (If you want to investigate how to build map-like constructs, there is an article describing how to do that). I won’t describe here how to build an alternate implementation which would look-up keys in a database, but it is rather straightforward.

As far as signing is concerned, interacting with the JVM is required. To avoid pulling-in additional dependencies, we use the javax.crypto available classes:

(defn bytes->hex [bytes]
  (reduce str (map (partial format "%02x") bytes)))

(defn sign-string [secret-key payload]
  (let [key (SecretKeySpec. (.getBytes secret-key) "HmacSHA256")]
    (-> (doto (Mac/getInstance "HmacSHA256")
          (.init key))
        (.doFinal (.getBytes payload))
        (bytes->hex))))

We now have all necessary bits to write a first authorization function. Here is a first version without the addition of components for now:

(defn request-signature [keystore request]
  (when-let [secret (get keystore (get-in request [:authorization :api-key]))]
    (sign-string secret (str timestamp payload))))

(defn authorized-request? [keystore equest]
  (when-let [signature (request-signature keystore request)]
    (= (get-in request [:authorization :signature]) signature)))

This already gives us a lot of safety: a stolen secret key does not allow signing arbitrary requests as would a simple key/token validation approach, commonly found in API implementations.

One thing this authorization scheme is subject to though is replay attacks, a stolen signed payload can be replayed at will.

To limit this risk, we can rely on good wall clocks to ensure that requests are sent within a reasonable timeframe, which we can store as an option:

(def max-delta-ms 500)

We can then write our updated auhtorization function. Note how here we made authorized-request? use a Authorizer as its input. This can be safely done, since started component get their depencies provided.

(defn authorized-timestamp? [timestamp]
  (let [now (System/currentTimeMillis)]
    (<= (- timestamp max-delta-ms) now (+ timestamp max-delta-ms))))

(defn request-signature [keystore request]
  (when-let [secret (get keystore (get-in request [:authorization :api-key]))]
    (sign-string secret (str (:timestamp request) (:payload request)))))

(defrecord Authorizer [keystore])

(defn authorized-request? [{:keys [keystore]} request]
  (when-let [signature (request-signature keystore request)]
    (and (= (get-in request [:authorization :signature]) signature)
         (authorized-timestamp? (:timestamp request)))))

This solution will provide a good layer of security while being secure enough for most practical purposes. Going one step further would involve guaranteeing no replay attack can be performed by handing-out a one-time token for each request. We will not describe this scheme in this article.

While complete, the solution is now hard to test, since it relies on a wall clock. There are three approaches to testing we can take:

  • Good old sleep calls which are a safe way of having spurious test errors :-)
  • Mocking wall clock calls
  • Making the clock a component

It does seem overkill to build a specific clock component for the standard behavior of a wall clock which just reaches out to the system.

(defprotocol Clock  (now! [this]))
(defrecord WallClock [] Clock (now! [this] (System/currentTimeMillis)))

With this simple protocol we can now build our complete component system. This will be quite similar to the previous presented implementation, with the exception that the Authorizer component now depends on clock as well and will use both in authorized-request?.

(defn authorized-timestamp? [clock timestamp]
  (<= (- timestamp max-delta-ms) (now! clock) (+ timestamp max-delta-ms)))

(defn request-signature [keystore request]
  (when-let [secret (get keystore (get-in request [:authorization :api-key]))]
    (sign-string secret (str (:timestamp request) (:payload request)))))

(defrecord Authorizer [clock keystore])

(defn authorized-request? [{:keys [keystore clock]} request]
  (when-let [signature (request-signature keystore request)]
    (and (= (get-in request [:authorization :signature]) signature)
         (authorized-timestamp? clock (:timestamp request)))))

Our resulting system will thus be a three-component one:

  • A *clock* component which will give the current time.
  • A *keystore* component to look-up the secret key corresponding to an API key.
  • An *authorizer* component, used to authorize incoming requests, relying on the two above components.

We can then imagine building the system like this:

(defn start-system [secret-keys]
   (-> (component/system-map :keystore   secret-keys
                             :clock      (->WallClock)
                             :authorizer (map->Authorizer {}))
       (component/system-using {:authorizer [:clock :keystore]})
       (component/start-system)))

With this, everything necessary for authorizing requests is available, but there are no tests yet. If we were to rely on this implementation for tests, we would have to play with timing for test purposes:

(deftest simple-signing
  (let [sys (start-system {:foo "ABCDEFGHIJK"})]
    (doseq [cmd ["start-engine" "thrust" "stop-engine"]]
      (let [request {:timestamp (now! (:clock sys))
                     :payload       cmd
                     :authorization {:api-key :foo}}
            signed  (assoc-in request [:authorization :signature]
                              (request-signature (:keystore sys) request))]
        (is (authorized-request? sys signed))
        (Thread/sleep 600)
        (is (not(authorized-request? sys signed)))))))

This is unfortunately brittle and does not lend itself easily to a large number of tests since it relies on sleep.

Thanks to our component-based approach we can now write an alternate clock:

(defrecord RefClock [state] Clock (now! [_] @state))

Once we have our new clock, we can adapt the start system function:

(defn start-system [secret-keys time]
   (-> (component/system-map :keystore   secret-keys
                             :clock      (if time (->RefClock time) (->WallClock))
                             :authorizer (map->Authorizer {}))
       (component/system-using {:authorizer [:clock :keystore]})
       (component/start-system)))

This new clock can then be used for our tests, doing away with brittle sleep calls and paving the way for generative tests.

(deftest simple-signing
  (let [time (atom 0)
        sys  (start-system {:foo "ABCDEFGHIJK"} time)]
    (doseq [cmd ["start-engine" "thrust" "stop-engine"]]
      (let [request {:timestamp (now! (:clock sys))
                     :payload       cmd
                     :authorization {:api-key :foo}}
            signed  (assoc-in request [:authorization :signature]
                              (request-signature (:keystore sys) request))]
        (is (authorized-request? sys signed))
        (swap! time + max-delta-ms 1) 
        (is (not(authorized-request? sys signed)))))))

While this is nice, it only tests a very small subset of input. To go beyond this, we can reach out to clojure.spec to give us compile-time guarantees that we are using correct types for our functions and to allow building generative tests.

In a few instances, we help generators by providing a set of known values. We start off by forcing every generated keystore instance to be:

{:foo "ABCDEFGH"
 :bar "IJKLMNOP"}

Generated api-key instances will also always be either :foo or :bar. Clock instance generation is bound to a RefClock instance as well.

Let’s look at the code in detail. We start by defining a few predicates to make our specs a bit easier to understand:

(def lookup?           #(instance? clojure.lang.ILookup %))
(def clock?            #(satisfies? Clock %))
(def not-empty-string? #(not= "" %))
(def sig-bytes?        #(= 32 (count %))) ;; Number of bytes in a signature
(def valid-sig-width?  #(= 64 (count %)))
(def valid-sig-chars?  #(re-matches #"^[0-9a-f]+$" %))

Next we can define data types for every plain and compound type we have created:

(s/def ::keystore lookup?)
(s/def ::clock clock?)
(s/def ::authorizer (s/keys :req-un [::keystore ::clock]))
(s/def ::signature (s/and string? valid-sig-width? valid-sig-chars?))
(s/def ::api-key keyword?)
(s/def ::authorization (s/keys :req-un [::api-key] :opt-un [::signature]))
(s/def ::timestamp int?)
(s/def ::secret-key (s/and string? not-empty-string?))
(s/def ::payload (s/and string? not-empty-string?))
(s/def ::request (s/keys :req-un [::timestamp ::payload ::authorization]))
(s/def ::bytes (s/and bytes? sig-bytes?))

I like to also provide separate specs for argument lists:

(s/def ::auth-request? (s/cat :authorizer ::authorizer :request ::request))
(s/def ::request-signature (s/cat :keystore ::keystore :request ::request))
(s/def ::auth-timestamp? (s/cat :clock ::clock :timestamp ::timestamp))
(s/def ::sign-string (s/cat :secret-key ::secret-key :payload string?))
(s/def ::bytes->hex (s/cat :bytes ::bytes))
(s/def ::now! (s/cat :block ::clock))

We can now use the above types to specify our functions. Nothing extraordinary here if you have already used spec.

(s/fdef bytes->hex :args ::bytes->hex :ret ::signature)
(s/fdef sign-string :args ::sign-string :ret ::signature)
(s/fdef now! :args ::now! :ret ::timestamp)
(s/fdef authorized-timestamp? :args ::auth-timestamp? :ret boolean?)
(s/fdef request-signature :args ::request-signature :ret ::signature)
(s/fdef authorized-request? :args ::auth-request? :ret boolean?)

We are now fully specified and using instrument will allow verifying functions are called properly.

The complex bit is to go from here to tests which use generators for building sensible data. Relying on the provided generators will not cut it as they would not be able to build clock and keystore instances, nor would they be able to provide sensible timestamp or signature values.

This is most obvious in request which contains co-dependent information, since the :signature field in the :authorization map depends on the payload and timestamp of the request. Likewise, testing authorized-timestamp? relies on having a solid way of generating timestamp, which we built our Clock protocol for.

Fortunately, spec allows overriding generators. We can start by building simple generators for values we want picked from a narrow set, this is for instance the case for our keystore and related api keys:

(def fake-keystore {:foo "ABCDEFGH" :bar "IJKLMNOP"})
(def fake-time     (atom 0))
(def fake-clock    (->RefClock fake-time))

(defn keystore-gen [] (s/gen #{fake-keystore}))
(defn api-key-gen  [] (s/gen (set (keys fake-keystore))))
(defn clock-gen    [] (s/gen #{fake-clock}))

We can test out this generators on the repl:

(gen/sample (s/gen (s/with-gen ::api-key api-key-gen)))
(gen/sample (s/gen (s/with-gen ::clock-gen clock-gen)))

To instrument bytes->hex we will need a way of generating 32 wide byte arrays. Since there is no such generator, we will need to compose the creation of a 32-width vector and its coercion to a byte array:

(defn bytes-gen    [] (gen/fmap byte-array (gen/vector tgen/byte 32)))

In the above we use byte from clojure.test.check.generators since no such generator exists in clojure.spec.gen.

Only the most complex generator remains, request-gen for building request maps. If we look at our base building blocks, here is what we need to build a correct request map:

  • A *keystore* to sign the request
  • A *clock* to get a correct timestamp
  • A random *api-key*
  • A random *payload*

Once we have these elements we can transform them into a correct request. We will use fmap again here, and split out request generation in two functions:

(defn sign-request [[ks req]]
   (assoc-in req [:authorization :signature] (request-signature ks req)))

(defn build-request [{:keys [clock payload keystore api-key]}]
  (vector
    keystore
    {:timestamp     (now! clock)
     :payload       payload
     :authorization {:api-key api-key}}))

(defn request-gen []
  (gen/fmap
    (comp sign-request build-request)
    (s/gen (s/keys :req-un [::clock ::keystore ::api-key ::payload])
           {::clock clock-gen ::keystore keystore-gen ::api-key api-key-gen})))

We now have a solid way of generating requests, we can again test it on the repl:

(gen/sample (s/gen (s/with-gen ::request request-gen)))

Now that we have good generation available, we can write automated testing for all of our functions. We can do this by enumerating all testable symbols in the current namespace and running generative testing on them, supplying our list of generator overrides. This involves checking that the result is true for all test outputs generated by clojure.spec.test/check:

(def gen-overrides {::keystore      keystore-gen
                    ::clock         clock-gen
                    ::api-key       api-key-gen
                    ::bytes         bytes-gen
                    ::request       request-gen})

(deftest generated-tests
  (doseq [test-output (-> (st/enumerate-namespace 'request.signing)
                          (st/check {:gen gen-overrides}))]
    (testing (-> test-output :sym name)
      (is (true? (-> test-output :clojure.spec.test.check/ret :result))))))

To go, one last step further, we can supply a different function spec to our most important function, authorized-request? to make sure that given all provided inputs, our authorizer determined the request to be authorized:

(deftest specialized-tests
   (testing "authorized-request?"
      (is (true? (-> (st/check-fn authorized-request?
                                  (s/fspec :args ::auth-request? :ret boolean?)
                                  {:gen gen-overrides})
                     :clojure.spec.test.check/ret
                     :result)))))

Last, we run all tests:

(run-tests 'request.signing)

I’d like to thank Max Penet and Gary Fredericks for their valuable input while writing this.


          Building an atomic database with clojure   

Atoms provide a way to hold onto a value in clojure and perform thread-safe transitions on that value. In a world of immutability, they are the closest equivalent to other languages’ notion of variables you will encounter in your daily clojure programming.

Storing with an atom

One of the frequent uses of atoms is to hold onto maps used as some sort of cache. Let’s say our program stores a per-user high score for a game.

To store high-scores in memory atoms allow us to implement things very quickly:

(ns game.scores
  "Utilities to record and look up game high scores")

(defn make-score-db
  "Build a database of high-scores"
  []
  (atom nil))

(def compare-scores
  "A function which keeps the highest numerical value.
   Handles nil previous values."
  (fnil max 0))

(defn record-score!
  "Record a score for user, store only if higher than
   previous or no previous score exists"
  [scores user score]
  (swap! scores update user compare-scores score))

(defn user-high-score
  "Lookup highest score for user, may yield nil"
  [scores user]
  (get @scores user))

(defn high-score
  "Lookup absolute highest score, may yield nil
   when no scores have been recorded"
  [scores]
  (last (sort-by val @scores)))

In the above we have put together a very simple record mechanism, which through the use of defonce keeps scores across application reloads or namespace reevaluations. Ideally this should be provided as a component, but for the purposes of this post we will keep things as simple as possible.

Using the namespace works as expected:

(def scores (make-score-db))
(high-score scores)         ;; => nil
(user-high-score scores :a) ;; => nil
(record-score! scores :a 2) ;; => {:a 2}
(record-score! scores :b 3) ;; => {:a 2 :b 3}
(record-score! scores :b 1) ;; => {:a 2 :b 3}
(record-score! scores :a 4) ;; => {:a 4 :b 3}
(user-high-score scores :a) ;; => 4
(high-score scores)         ;; => [:a 4]

Atom persistence

This is all old news to most. What I want to showcase here is how the add-watch functionality on top of atoms can help serializing atoms like these.

First lets consider the following:

  • We want to store our high-scores state to disk
  • The content of high-scores contains no unprintable values

It is thus straightforward to write a serializer and deserializer for such a map:

(ns game.serialization
  "Serialization utilities"
   (:require [clojure.edn :as edn]))

(defn dump-to-path
  "Store a value's representation to a given path"
  [path value]
  (spit path (pr-str value)))

(defn load-from-path
  "Load a value from its representation stored in a given path.
   When reading fails, yield nil"
  [path]
  (try
    (edn/read-string (slurp path))
    (catch Exception _)))

This also works as expected:

(dump-to-path "/tmp/scores.db"
  {:a 0 :b 3 :c 3 :d 4})          ;; => nil
(load-from-path "/tmp/scores.db") ;; => {:a 0 :b 3 :c 3 :d 4}

With these two separate namespaces, we are now left figuring out how to persist our high-score database. To be as faithful as possible, we will avoid techniques such as doing regular snapshots. Instead we will reach out to add-watch which has the following signature (add-watch reference key fn) and documentation:

Adds a watch function to an agent/atom/var/ref reference. The watch fn must be a fn of 4 args: a key, the reference, its old-state, its new-state. Whenever the reference’s state might have been changed, any registered watches will have their functions called. The watch fn will be called synchronously, on the agent’s thread if an agent, before any pending sends if agent or ref. Note that an atom’s or ref’s state may have changed again prior to the fn call, so use old/new-state rather than derefing the reference. Note also that watch fns may be called from multiple threads simultaneously. Var watchers are triggered only by root binding changes, not thread-local set!s. Keys must be unique per reference, and can be used to remove the watch with remove-watch, but are otherwise considered opaque by the watch mechanism.

Our job is thus to write a 4 argument function of the atom itself, a key to identify the watcher, the previous and new state.

To persist each state transition to a file, we can use our dump-to-path function above as follows:

(defn persist-fn
  "Yields an atom watch-fn that dumps new states to a path"
  [path]
  (fn [_ _ _ state]
    (dump-to-path path state)))

(defn file-backed-atom
   "An atom that loads its initial state from a file and persists each new state
    to the same path"
   [path]
   (let [init  (load-from-path path)
         state (atom init)]
     (add-watch state :persist-watcher (persist-fn path))
     state))

Wrapping up

The examples above can now be exercized using our new file-backed-atom function:

(def scores (file-backed-atom "/tmp/scores.db"))
(high-score scores)         ;; => nil
(user-high-score scores :a) ;; => nil
(record-score! scores :a 2) ;; => {:a 2}
(record-score! scores :b 3) ;; => {:a 2 :b 3}
(record-score! scores :b 1) ;; => {:a 2 :b 3}
(record-score! scores :a 4) ;; => {:a 4 :b 3}
(user-high-score scores :a) ;; => 4
(high-score scores)         ;; => [:a 4]

The code presented here is available here


          Why were there gotos in apple software in the first place?   

A recent vulnerability in iOS and Mac OS can boils down to a double goto resulting in making critical ssl verification code unreachable.

hashOut.data = hashes + SSL_MD5_DIGEST_LEN;
hashOut.length = SSL_SHA1_DIGEST_LEN;
if ((err = SSLFreeBuffer(&hashCtx)) != 0)
    goto fail;
if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0)
    goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0)
    goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
    goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
    goto fail;
    goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
    goto fail;

/* ... */

fail:
    SSLFreeBuffer(&signedHashes);
    SSLFreeBuffer(&hashCtx);
    return err;

Since the fail label return err, no error is reported in normal conditions, making the lack of verification silent.

But gotos are bad, lol

With all the talk about goto being bad (if you haven’t, read Edsger Dijkstra’s famous go to considered harmful), it’s a wonder it could still be found in production code. In this short post I’d like to point out that while goto is generally a code smell, it has one very valid and important use in Ansi C: exception handling.

Let’s look at a simple function that makes use of goto exception handling:

char *
load_file(const char *name, off_t *len)
{
    struct stat  st;
    off_t            size;
    char            *buf = NULL;
    int            fd;

    if ((fd = open(name, O_RDONLY)) == -1)
        return (NULL);
    if (fstat(fd, &st) != 0)
        goto fail;
    size = st.st_size;
    if ((buf = calloc(1, size + 1)) == NULL)
        goto fail;
    if (read(fd, buf, size) != size)
        goto fail;
    close(fd);

    *len = size + 1;
    return (buf);

fail:
    if (buf != NULL)
        free(buf);
    close(fd);
    return (NULL);
}

Here goto serves a few purposes:

  • keep the code intent clear
  • reduce condition branching
  • allow graceful failure handling

While this excerpt is short, it would already be much more awkward to repeat the failure handling code in the body of the if statement testing for error conditions.

A more complex example shows how multiple types of “exceptions” can be handled with goto without falling into the spaghetti code trap.

void
ssl_read(int fd, short event, void *p)
{
    struct bufferevent  *bufev = p;
    struct conn           *s = bufev->cbarg;
    int                      ret;
    int                      ssl_err;
    short                      what;
    size_t                   len;
    char                       rbuf[IBUF_READ_SIZE];
    int                      howmuch = IBUF_READ_SIZE;

    what = EVBUFFER_READ;

    if (event == EV_TIMEOUT) {
        what |= EVBUFFER_TIMEOUT;
        goto err;
    }

    if (bufev->wm_read.high != 0)
        howmuch = MIN(sizeof(rbuf), bufev->wm_read.high);

    ret = SSL_read(s->s_ssl, rbuf, howmuch);
    if (ret <= 0) {
        ssl_err = SSL_get_error(s->s_ssl, ret);

        switch (ssl_err) {
        case SSL_ERROR_WANT_READ:
            goto retry;
        case SSL_ERROR_WANT_WRITE:
            goto retry;
        default:
            if (ret == 0)
                what |= EVBUFFER_EOF;
            else {
                ssl_error("ssl_read");
                what |= EVBUFFER_ERROR;
            }
            goto err;
        }
    }

    if (evbuffer_add(bufev->input, rbuf, ret) == -1) {
        what |= EVBUFFER_ERROR;
        goto err;
    }

    ssl_bufferevent_add(&bufev->ev_read, bufev->timeout_read);

    len = EVBUFFER_LENGTH(bufev->input);
    if (bufev->wm_read.low != 0 && len < bufev->wm_read.low)
        return;
    if (bufev->wm_read.high != 0 && len > bufev->wm_read.high) {
        struct evbuffer *buf = bufev->input;
        event_del(&bufev->ev_read);
        evbuffer_setcb(buf, bufferevent_read_pressure_cb, bufev);
        return;
    }

    if (bufev->readcb != NULL)
        (*bufev->readcb)(bufev, bufev->cbarg);
    return;

retry:
    ssl_bufferevent_add(&bufev->ev_read, bufev->timeout_read);
    return;

err:
    (*bufev->errorcb)(bufev, what, bufev->cbarg);
}

One could wonder why functions aren’t used in lieue of goto statements in this context, it boils down to two things: context and efficiency.

Since the canonical use case of goto is for a different termination path that handles cleanup it needs context - i.e: local variables - that would need to be carried to the cleanup function this would make for proliferation of awkward specific functions.

Additionaly, functions create additional stack frames which in some scenarios may be a concern especially in the context of kernel programming, and critical path functions.

The take-away

While there is a general sentiment that the goto statement should be avoided, which is mostly valid, it’s not a hard rule and there is, in C, a very valid use case that only goto provides.

In the case of the apple code, the error did not stem from the use of the goto statement but on an unfortunate typo.

It’s interesting to note that Edsger Dijkstra wrote his original piece at a time where conditional and loop constructs such if/then/else and while where not available in mainstream languages such as Basic. He later clarified his initial statement, saying:

Please don’t fall into the trap of believing that I am terribly dogmatical about [the goto statement]. I I have the uncomfortable feeling that others are making a religion out of it, as if the conceptual problems of programming could be solved by a single trick, by a simple form of coding discipline.

words of wisdom.


          Solving Nginx logging in 60 lines of Haskell   

Nginx is well-known for only logging to files and being unable to log to syslog out of the box.

There are a few ways around this, one that is often proposed is creating named pipes (or FIFOs) before starting up nginx. Pipes have the same properties than regular files in UNIX (to adhere to the important notion that everything is a file in UNIX), but they expect data written to them to be consumed by another process at some point. To compensate for the fact that consumers might sometimes be slower than producers they maintain a buffer of readily available data, with a hard maximum of 64k in Linux systems for instance.

Small digression: understanding linux pipes max buffer size

It can be a bit confusing to figure out what the exact size of FIFO buffer is in linux. Our first reflex will be to look at the output of ulimit

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 30
file size               (blocks, -f) unlimited
pending signals                 (-i) 63488
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 99
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63488
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Which seems to indicate that the available pipe size in bytes is 512 * 8, amounting to 4kb. Turns out, this is the maximum atomic size of a payload on a pipe, but the kernel reserves several buffers for each created pipe, with a hard limit set in https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/pipe_fs_i.h?id=refs/tags/v3.13-rc1#n4.

The limit turns out to be 4096 * 16, amounting to 64kb, still not much.

Pipe consumption strategies

Pipes are tricky beasts and will bite you if you try to consume them from syslog-ng or rsyslog without anything in between. First lets see what happens if you write on a pipe which has no consumer:

$ mkfifo foo
$ echo bar > foo

bash

That’s right, having no consumer on a pipe results in blocking writes which will not please nginx, or any other process which expects logging a line to a file to be a fast operation (and in many application will result in total lock-up).

Even though we can expect a syslog daemon to be mostly up all the time, it imposes huge availability constraints on a system daemon that can otherwise safely sustain short availability glitches.

A possible solution

What if instead of letting rsyslog do the work we wrapped the nginx process in with a small wrapper utility, responsible for pushing logs out to syslog. The utility would:

  • Clean up old pipes
  • Provision pipes
  • Set up a connection to syslog
  • Start nginx in the foreground, while watching pipes for incoming data

The only requirement with regard to nginx’s configuration is to start it in the foreground, which can be enabled with this single line in nginx.conf:

daemon off;

Wrapper behavior

We will assume that the wrapper utility receives a list of command line arguments corresponding to the pipes it has to open, if for instance we only log to /var/log/nginx/access.log and /var/log/nginx/error.log we could call our wrapper - let’s call it nginxpipe - this way:

nginxpipe nginx-access:/var/log/nginx/access.log nginx-error:/var/log/nginx/error.log

Since the wrapper would stay in the foreground to watch for its child nginx process, integration in init scripts has to account for it, for ubuntu’s upstart this translates to the following configuration in /etc/init/nginxpipe.conf:

respawn
exec nginxpipe nginx-access:/var/log/nginx/access.log nginx-error:/var/log/nginx/error.log

Building the wrapper

For once, the code I’ll show won’t be in clojure since it does not lend itself well to such tasks, being hindered by slow startup times and inability to easily call OS specific functions. Instead, this will be built in haskell which lends itself very well to system programming, much like go (another more-concise-than-c system programming language).

First, our main function:

main = do
  mainlog <- openlog "nginxpipe" [PID] DAEMON NOTICE
  updateGlobalLogger rootLoggerName (setHandlers [mainlog])
  updateGlobalLogger rootLoggerName (setLevel NOTICE)
  noticeM "nginxpipe" "starting up"
  args <- getArgs
  mk_pipes $ map get_logname args
  noticeM "nginxpipe" "starting nginx"
  ph <- runCommand "nginx"
  exit_code <- waitForProcess ph
  noticeM "nginxpipe" $ "nginx stopped with code: " ++ show exit_code

We start by creating a log handler, then using it as our only log destination throughout the program. We then call mk_pipes which will look on the given arguments and finally start the nginx process and wait for it to return.

The list of argument given to mk_pipes is slightly modified, it transforms the initial list consisting of

[ "nginx-access:/var/log/nginx/access.log", "nginx-error:/var/log/nginx/error.log"]

into a list of string-tuples:

[("nginx-access","/var/log/nginx/access.log"), ("nginx-error","/var/log/nginx/error.log")]

To create this modified list which just map our input list with a simple function:

is_colon x = x == ':'
get_logname path = (ltype, p) where (ltype, (_:p)) = break is_colon path

Next up is the pipe creation, since Haskell has no loop we use tail recursion to iterate on the list of tuples:

mk_pipes :: [(String,String)] -> IO ()
mk_pipes (pipe:pipes) = do
  mk_pipe pipe
  mk_pipes pipes
mk_pipes [] = return ()

The bulk of work happens in the mk_pipe function:

mk_pipe :: (String,String) -> IO ()
mk_pipe (ltype,path) = do
  safe_remove path
  createNamedPipe path 0644
  fd <- openFile path ReadMode
  hSetBuffering fd LineBuffering
  void $ forkIO $ forever $ do
    is_eof <- hIsEOF fd
    if is_eof then threadDelay 1000000 else get_line ltype fd

The intersting bit in that function is the last 3 lines, where we create a new “IO Thread” with forkIO inside which we loop forever waiting for input for at most 1 second, logging to syslog when new input comes in.

The two remaining functions get_line and safe_remove have very simple definitions, I intentionnaly left a small race-condition in safe_remove to make it more readable:

safe_remove path = do
  exists <- doesFileExist path
  when exists $ removeFile path

get_line ltype fd = do
  line <- hGetLine fd
  noticeM ltype line

I’m not diving into each line of the code, there is plenty of great litterature on haskell, I’d recommmend “real world haskell” as a great first book on the language.

I just wanted to show-case the fact that Haskell is a great alternative for building fast and lightweight system programs.

The awesome part: distribution!

The full source for this program is available at https://github.com/pyr/nginxpipe, it can be built in one of two ways:

  • Using the cabal dependency management system (which calls GHC)
  • With the GHC compiler directly

With cabal you would just run:

cabal install --prefix=/somewhere

Let’s look at the ouput:

$ ldd /somewhere/bin/nginxpipe 
linux-vdso.so.1 (0x00007fffe67fe000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007fb8064d8000)
libutil.so.1 => /usr/lib/libutil.so.1 (0x00007fb8062d5000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fb8060d1000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fb805eb3000)
libgmp.so.10 => /usr/lib/libgmp.so.10 (0x00007fb805c3c000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fb805939000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fb805723000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fb805378000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb8066e0000)
$ du -sh /somewhere/bin/nginxpipe
1.9M /somewhere/bin/nginxpipe

That’s right, no crazy dependencies (for instance, this figures out the correct dependencies across archlinux, ubuntu and debian for me) and a smallish executable.

Obviously this is not a complete solution as-is, but quickly adding support for a real configuration file would not be a huge endeavour, where for instance an alternative command to nginx could be provided.

Hopefully this will help you consider haskell for your system programming needs in the future!


          In defense of immutability   

I thought I’d whip together a short blog post as a reaction to Mark Burgess’ (@markburgess_osl) keynote at the Cloudstack Collaboration Conference.

I thoroughly enjoyed the keynote but was a bit taken aback by one of the points that was made. It can be summed up in a quote that has since been floating around:

Mark digressed and dissed the notion that there is such a thing as immutable infrastructure and that it should be a goal to strive for. He supported this argument by saying that applications that live and perform a function or deliver a service can not be immutable - lest they are not running.

I think a few things are misguided in Mark’s analysis of what is meant by immutable infrastructure

Immutable infrastructure semantics

What people refer to when promoting immutable infrastructure is predominantly the promotion of immutable data structure to represent and converge infrastructure. In now way does it mean that systems are viewed as immobile.

It is also a realization that many parts of infrastructure can now be treated as fully stateless automatons and for which lifecycle management can partly happen at a different level than previously namely by replacing instance instead of reconverging the state of an existing system.

Immutability promotes persistent data structures and a better audit trail

Since immutable data structure enforce building new copies of data on change, instead of silently mutating state, it provides a better avenue to create a complete history of state for data.

One of the main thing immutable data provides is a consistent view of data at a certain point in time - which again, does not limit its ability to evolve over time. This property is key in building simple audit trails.

For one thing, if immutability was such a limiting factor, I don’t think so many programming languages would be built around it.

Immutable infrastructure does not conflict with configuration management

Many people now turning to this new way to think about lifecycle management of infrastructure and systems as a whole come from years of experience with configuration management and in no way are trying to get rid of it. It is more a reflexion on what conf management is today, where it happens and how it could evolve.

TL;DR

  • Immutable data structures can help improve the way we describe infrastructure and system components
  • Nobody thinks of systems as pure (in the functional sense) functions, environment matters
  • Immutable infrastructure refers to a consistent view at a certain point in time, changes means new copies
  • Configuration management still has a predominant place when striving for immutable infrastructure

I’ll now go read Mark’s book which he pitched rather well, except for this minor nitpick (ok that and the cheapshot at lambda calculus, but I won’t cover that!) :-)


          Another year of Clojure   

Clojure at paper.li

I’ve been involved with clojure almost exclusively for a year as smallriver’s lead architect, working on the paper.li product and wanted to share my experience of clojure in the real world.

I had a previous experience with clojure where I put it to work where ruby on rails wasn’t a natural fit, and although smallrivers is a close neighbor of typesafe in Switzerland, my previous experience with the language made it prevail on scala.

Why clojure ?

While working on the backend architecture at a previous company I decided to evaluate three languages which met the needs I was faced with:

  • erlang
  • scala
  • clojure

I decided to tackle the same simple task in all three languages and see how each would fare and how I felt about them. The company’s language at that time was Ruby and JS, and coming from a C background, I wanted a language which provided simplicity, good data structure support and concurrency features, while allowing us to still code quickly.

While naturally drawn to Erlang, I quickly had to set it apart because the stack that was starting to emerge at the time had JVM based parts and would benefit greatly from a language targetting the JVM. I was a bit bummed because some tools in the erlang world were very exciting and the lightweight actors were interesting for a part of our stack.

Scala made a very strong first impression on me, but in practice I was taken aback by some aspects of it: the lack of coherency of open source projects found on the net in terms of style, which made it hard to see which best practices and guidelines would have to be taught to the team, some of the code I found was almost reminiscent of perl a few year back, in the potential it had to become unmaintainable some time later. The standard build tool - SBT - also made a very weak impression. It seemed to be a clear step back from maven which given the fact that maven isn’t a first class citizen in the scala world seemed worrying.

Clojure took the cake, in part because it clicked with the lisper in me, in part because the common idioms that emerged from the code I read bore a lot of similarity with the way we approached ruby. The dynamic typing promised succinct code and the notation for vectors, maps and sets hugely improved the readability of lisp - look at how hashes work in emacs lisp if you want to know what i mean. I was very excited about dosync and a bit worried by the lack of leightweight erlang style actors even though I could see how agent’s could help in that regard. As I’ll point out later on, we ended up not using these features at all anyhow.

The task at hand

When I joined Smallrivers to work on paper.li, it became natural to choose clojure. The team was small and I felt comfortable with it. There was a huge amount of work which needed to be started quickly so a “full-stack” language was necessary to avoid spreading across too many languages and technologies, and another investigation in how the other languages had evolved in the meantime was not possible. The main challenges to tackle were:

  • Being able to aggregate more content
  • Improve the quality of the processing done on content
  • Scaling the storage cluster accordingly
  • Automate the infrastructure

The “hiring” problem

One thing that always pops up in discussions about somewhat marginal languages is the hiring aspect, and the fear that you won’t be able to find people if you “lock” yourself in a language decision that strays from the usual suspects. My experience is that when you tackle big problems, that go beyond simple execution but require actual strong engineers, hiring will be a problem, there’s just no way around it. Choosing people that fit your development culture and see themselves fit to tackle big problems is a long process, integrating them is also time consuming. In that picture, the chosen language isn’t a huge deciding factor.

I see marginal languages as a problem in the following organisations:

  • Companies tackling smaller problems, or problems already solved. These are right in choosing standard languages, if I built a team to build an e-commerce site I wouldn’t go to clojure.
  • Larger companies which want their employees to jump from project to project, which makes sense from a managerial standpoint.

What we built

The bulk of what was done revolves around these functional items:

  • A platform automation tool, built on top of pallet.
  • Clojure facades for the tools relied upon (elastic search, cassandra, redis, kafka).
  • An ORM-type layer on top of cassandra
  • Our backend pipelines
  • A REST API

I won’t go in too much detail on our in-house code, but rather reflect on how things went over.

Coding style and programming “culture”

One of the advantages of lisp, is that it doesn’t have much syntax to go around, so our rules stay simple:

  • the standard 2 space indent
  • we try to stick to 80 columns, because i’m that old
  • we always use require except for: clojure.tools.logging and pallet.thread-expr which are use’d
  • we avoid macros whenever possible
  • we use dynamically rebindable symbols

Of course we embraced non mutable state everywhere possible, which in our case is almost everywhere. Whenever we need to checkpoint state, it usually goes to our storage layer, not to in memory variables.

When compared to languages such as C, I was amazed at how little rules are needed to enforce a consistent code look across projects, with very little time needed to dive into a part written by someone else.

The tools

  1. Local environment

    We didn’t settle on a unique tool-suite at the office, when picking up clojure I made the move from vim to emacs because the integration is better and I fell in love with paredit. Spread amongst the rest of team, textmate, eclipse and intellij were used.

    For building projects, leiningen was an obvious choice. I think leiningen is a great poster child for the greatest in clojure. A small and intelligent facade on top of maven, hiding all the annoying part of maven while keeping the nice distribution part.

    For continuous integration, we wrote a small bridge between leiningen and zi lein-zi which outputs pom.xml for maven, which are then used to build the clojure projects. We still hope to find some time to write a leiningen plugin for jenkins.

  2. Asynchronous programming

    Since a good part of what paper.li does relies on aggregation, async programming is very important. In the pure clojure world, the only real choice for async programming is lamina and aleph. To be honest, aleph turned out to be quite the challenge, a combination of the amount of outbound connections that our work requires and the fact that aleph seems to initially target servers more than clients.

    Fortunately Zach Tellman put a lot of work into the library throughout last year and recent releases are more reliable. One very nice side effect of using a lisp to work with evented code is how readable code becomes, by retaining a sync like look.

    For some parts we still would directly go to a smaller netty facade if we were to start over, but that’s a direct consequence of how much we learned along the way.

  3. Libraries not frameworks

    A common mantra in the clojure development community is that to ease integration the focus should be on libraries, not frameworks. This shows in many widespread projects such as compojure, pallet, and a host of common clojure tools. This proved very useful to us as clients of these libraries, allowing easy composition. I think pallet stands out most in that regard. Where most configuration management solutions offer a complete framework, pallet is just a library offering machine provisioning, configuration and command and control, which allowed us to integrate it with our app and build our abstractions on top of it.

    We tried to stick to that mantra in all of our work, building many small composable libraries, we made some errors at the beginning, by underutilizing some of clojure features, such as protocols but we now have good dynamics for writing these libraries, by writing the core of them with as little dependencies as possible, describing the behavior through protocols, and then writing add-ons which bring in additional dependencies and implement the protocol.

  4. Macros and DSLs

    Another common mantra is to avoid overusing macros. It can’t be overstated how easy they make things though, our entity description library (which we should really prep up for public release, we’ve been talking about it for too long now) allows statements such as these (simplified):

    (defentity :contributors
      (column :identifier (primary-key))
      (column :type (required))
      (column :name)
      (column :screen_name (index))
      (column :description)
      (column :detail (type :compound))
    
      (column :user_url)
      (column :avatar_url)
      (column :statuses_count (type :number))
    
      (has-many :articles)
      (has-many :editions (referenced false) (ttl 172800))
      (has-many :posts (key (timestamp :published_at)) (referenced false)))
    

    The power of DSLs in clojure cannot be understated, with a few macros you can easily build full languages, allowing easy extending of the functionality. Case in point, extracting text from articles, like most people we rely on a generic readability type library, but we also need to handle some sites that need special handling. By using a small DSL you can easily push rules that look like (simplified):

    (defsiterule "some.obscure.site"
       [dom]
       (-> dom
           (pull "#stupid-article-id")))
    

    The great part is that you limit the knowledge to be transfered over to people writing the rules, you avoid intrusive changes to the core of your app and these can safely be pulled from an external location.

    At the end of the day, it seems to me as though the part of the clojure community that came from CL had awful memories of macros making code unreadable, but when sticking to macros with a common look and feel, i.e: with-<resource>, def<resource> type macros, there are huge succintness take aways without hindering readability or maintenance of the code.

  5. Testing

    Every respectable codebase is going to need at least a few test. I’m of the pragmatist church, and straight out do not believe in TDD, neither in crazy coverage ratios. Of course we still have a more that 95% unit test coverage and the decoupled approach preached by clojure’s original developer, rich hickey1 allows for very isolated testing. For cases that require mocking, midge provides a nice framework and using it has created very fruitful throughout our code.

  6. Concurrency, Immutable State and Data Handling

    Funnily, we ended up almost never using any concurrency feature, not a single dosync made it in our codebase, few atom’s and a single agent (in https://github.com/pyr/clj-statsd to avoid recreating a Socket object for each datagram sent). We also banned future usage to more closely control our thread pools. Our usage of atom’s is almost exclusively bound to things that are write once / read many, in some cases we’d be better off with rebindable dynamic symbols.

    We rely on immutable state heavily though, and by heavily I actually mean exclusively. This never was a problem across the many lines of code we wrote, and helped us keep a sane and decoupled code base.

    With facades allowing to represent database fields, queue entries, and almost anything as standard clojure data structures and with powerful functions to work on them, complex handling of a large amount of data is very easily expressed. For this we fell in love with several tools which made things even easier:

    • the threading operators -> and ->>
    • the pallet thread-expr library which brings branching in threaded operations: for->, when->, and so on
    • assoc-in, update-in, seq-utils/index-by and all these functions which allow easy transformation of data structs and retain a procedural look

    I cannot stress how helpful this has been for us in doing the important part of our code right and in a simple manner. This is clearly the best aspect of clojure as far as I’m concerned.

    Moreover, building on top of Java and with the current focus on “Big Data” everywhere, the interaction with large stores and tools to help building batch jobs are simply amazing, especially cascalog.

  7. The case of Clojurescript

    While very exciting we did not have a use for clojurescript, given the size of the existing JS codebase, and the willingness of the frontend developers to stick to a known.

    The simple existence of the project amazes me, especially with the promise of more runtimes, there are various implementations on top of lua, python and gambit (a scheme that compiles to C). With projects like cascalog, pallet, lein, compojure, noir and clojurescript, the ecosystem addresses all parts of almost any stack that you will be tempted to build and we didn’t encounter cases of feeling cornered by the use of clojure - admiteddly, most of the time, a Java library came to the rescue.

  8. The community

    The community is very active, and has not reach critical mass yet, which makes its mailing-list and irc room still usable. There are many influent public figures, some who bring insight, some who bring beautiful code. Most are very open and available to discussion which shaped our approach of the language and our way of coding along the way.

Closing words

It’s been an exciting year and we’re now a full fledged 80% clojure shop. I’m very happy with the result, more so with the journey. I’m sure we could have achieved with other languages as well. As transpires throughout the article, the whole team feels that should we start over, we would do it in clojure again.

It helped us go fast, adapt fast and didn’t hinder us in any way. The language seems to have a bright future ahead of it which is reassuring. I would encourage people coming from python and ruby to consider it as a transition language or as their JVM targetting language, since many habits are still valid in clojure and since it helps slightly change the way we look at problems which can then be reapplied in more “traditional” languages.


  1. Rich hickey’s talk simple made easy and his coining of the term “complecting” illustrates that http://www.infoq.com/presentations/Simple-Made-Easy

    [return]

          Clojure Wrappers   

Functions in the wild

Functional programming rears its head in the most unusual places in software design. Take the web stack interfaces (rack1, plack2, WSGI3), they all implement a very functional view of what a web application is: a function that takes a map as input and returns a map as output.

Middleware then build on that abstraction composing themselves down to the actual handler call.

The graylog2 extension mechanism is a good example of this, the bulk of which is really simple:

def _call(env)
  begin
    # Call the app we are monitoring
    @app.call(env)
  rescue Exception => err
    # An exception has been raised. Send to Graylog2!
    send_to_graylog2(err)

    # Raise the exception again to pass backto app.
    raise
  end
end

All the code does is wrap application call in an exception catching block and returning the original result. Providing such a composition interface enables doing two useful things for middleware applications:

  • Taking action before the handler is called, for instance parsing json data as arguments.
  • Taking action after the handler was called, in this case catching exceptions.

Composition in clojure

The russian doll approach taken in rack was a natural fit for clojure’s web stack, ring4. What I want to show here is how easy it is to write a simple wrapping layer for any type of function, enabling building simple input and output filters for any type of logic.

The basics

Let’s say we have a simple function interacting with a library, taking a map as parameter, yielding an operation status map back:

(defn send-command
  "send a command"
  [payload]
  (-> payload
     serialize     ; translate into a format for on-wire
     send-sync     ; send command and wait for answer
     deserialize)) ; translate result back as map

Now let’s say we need the following filters:

  • We need certain keys in the command map sent out
  • We want to provide defaults for the reply map
  • We want to time command execution for statistics usage

The functions are easy to write:

(defn filter-required [payload]
  (let [required [:user :operation]] 
    (when (some nil? (map payload required))
      (throw (Exception. "invalid payload"))))
  payload)

(defn filter-defaults [response]
  (let [defaults {:status :unknown, :user :guest}]
    (merge defaults response)))

(defn time-command [payload]
  (let [start-ts    (System/nanoTime)
        response    (send-command payload)
        end-ts      (System/nanoTime)]
    (merge response {:elapsed (- end-ts start-ts)})))

Now all that is required is linking those functions together. A very naive approach would be to go the imperative way, with let:

(defn linking-wrappers [payload]
  (let [payload  (filter-required payload)
        payload  (filter-defaults payload)
        response (time-command payload)]
    response))

Evolving towards a wrapper interface

Thinking about it in a more functional way, it becomes clear that this is just threading the payload through functions. Clojure even has a nice macro that does just that.

(defn composing-wrappers [payload]
  (-> payload filter-required filter-defaults time-command))

This is already very handy, but needs a bit of work when we want to move the filters around, or if we wanted to be able to provide the filters as a list, even though using loop and recur it seems feasible.

One of the gripes of such an approach is that you need two types of middleware functions, those that happen before and those that happen after an action, writing a generic timing filter that can be plugged in anywhere would involve writing two filter functions!

The other gripe is that there is no way to bypass the execution of the filter chain, except by throwing exceptions, what we want is to wrap around the command call to be able to interfere with the processing.

Looking back on the rack approach, we see that the call to the actual rack handler is enclosed within the middleware, doing the same in clojure would involve returning a function wrapping the original call, which is exactly what has been done for ring5, by the way:

(defn filter-required [handler]
  (fn [payload]
    (let [required [:user :operation]] 
      (if (some nil? (map payload required))
        {:status :fail :message "invalid payload"}
        (handler payload)))))

(defn filter-defaults [handler]
  (fn [payload]
    (let [defaults {:status :unknown, :user :guest}]
      (handler (merge defaults payload)))))

(defn time-command [handler]
  (fn [payload]
    (let [start-ts    (System/nanoTime)
          response    (handler payload)
          end-ts      (System/nanoTime)]
      (merge response {:elapsed (- end-ts start-ts)}))))

Reusing the threading operator, building the composed handler is now dead easy:

(def composed (-> send-command
                  time-command
                  filter-defaults
                  filter-required))

Tying it all together

We have now reached the point where composition is very easy, at the expense of a bit of overhead when writing wrappers.

The last enhancement that could really help is being able to provide a list of functions to decorate a function with which would yield the composed handler.

We cannot apply to -> since it is a macro, so we call loop and recur to the rescue:

(defn wrap-with [handler all-decorators]
  (loop [cur-handler  handler
         decorators   all-decorators]
    (if decorators
      (recur ((first decorators) cur-handler) (next decorators))
      cur-handler)))

Or as scottjad noted:

(defn wrap-with [handler all-decorators]
  (reduce #(%2 %1) handler all-decorators))

Now, you see this function has no knowledge at all of the logic of handlers, making it very easy to reuse in a many places, writing composed functions is now as easy as:

(def wrapped-command
  (wrap-with send-command [time-command filter-defaults filter-required]))

I hope this little walkthrough helps you navigate more easily through projects such as ring, compojure, and the likes. You’ll see that in many places using such a mechanism allows elegant test composition.


          Controls Engineer   
MN-ALEXANDRIA, I have a client located in Alexandria, MN that has an immediate need for a Controls Engineer. Requirement/Duties You will be programming from concept to completion, with up to 30% travel. Experience with Panel Layout and Schematic Design PLC knowledge is needed Proficiency in Allen Bradley and Auto CAD Bachelors Degree is a Plus Start up and Commissioning with up to 30% travel Will be programming
          GLAAD Supports Local Activists' Successful Efforts to Prevent Anti-Gay TV Program from Airing   
On Monday morning, we heard concerns from community members about the anti-gay infomercial Speechless: Silencing the Christians, created and distributed by the anti-gay organization the American Family Association. When we found out the program was scheduled to air in Grand Rapids, Michigan, and Columbus, Ohio, we reached out to partner organizations on the ground to find out more information and support local efforts. After viewing the infomercial, the intent was clear -  it was designed to perpetuate a climate of hostility toward our community and to create a culture where we are less safe, less secure, and where our families are put in harm's way. Since Monday, we have been working with local community members in Grand Rapids, offering them assistance as they led efforts to mobilize community members to express their concerns to the station management at WOOD-TV (NBC), where it was set to air. The organizing was led by Colette Beighley, who serves as assistant director of the LGBT resource center at Grand Valley State University and a GLAAD-trained spokesperson. Colette is also serving as the community's lead spokesperson on the issue, and she continues to work with GLAAD on media monitoring and interview prep this week. Thanks to the efforts of community members on the ground, WOOD-TV first postponed the airing. The station then said it offered the American Family Association another timeslot. General Manager Diane Kniowski said: "We made a gesture of the 2-3 p.m. Saturday time period. It's been 24 hours and we had no response. Our station is being bombarded with calls and messages, and we find ourselves in the middle of someone else's fight. Ours was a fair offer and we are removing ourselves from this matter." WSYX-TV (ABC) in Columbus, Ohio, has also decided to postpone airing the anti-gay informercial after hearing concerns from community members, and will issue a decision later after the general manager has had an opportunity to review.  A new air date has not been set. The anti-gay infomercial aired in Traverse City, Michigan (WPBN - NBC); Toledo, Ohio (WUPW - Fox); and Charlotte, North Carolina (WJZY - The CW) on Saturday, Feb. 7, with very little fanfare, and the information aired with no traction. Yesterday afternoon Equality Toledo issued an action alert urging community members to engage in dialogue with WUPW about their decision to air this anti-gay programming.
February 11, 2009

          Longtime NYC LGBT Center Director Accepts Position at Arcus   
Richard Burns

Richard Burns

Last week New York City’s LGBT Community Center announced its executive director, Richard Burns, will be leaving the Center for a post at the Arcus Foundation as chief operating officer.

Since Burns accepted the position 22 years ago this month, he built the Center into a space for around 30 community groups to meet to a hub providing cultural programs, public policy and recreational programming, mental health and social services, and meeting space to more than 6,000 folks a week Burns’ work at the Center will be remembered by many. His pioneering spirit that helped the Center through its early years during the onset of the HIV/AIDS crisis. His commitment to forge partnerships with allied progressive movements has left a mark on LGBT activism.

“Richard Burns has been the driving force of the Center for the past 22 years,” said Center Board President Bruce Anderson in a statement. “His vision, perseverance and dedication to the LGBT Liberation Movement secures his position as one of the more important social justice leaders in the country today.”

December 16, 2008

          Valiant Comics at Denver Comic Con   

Please Share and Follow us on Twitter!







Valiant will be rolling deep into Denver Comic Con and they have a lot to check out!

Books: Will be selling specail variant cover of Secret Weapons with art by Katie Cook.

Special Guests at the Valiant Booth to include:
Jodie Houser (Faith)
Fred Van Lente (War Mother, Archer and Armstrong)
Bart Sears (Bloodshot & Hard Corps Unity)

Valiant 101 Panel:  There will be a panel on Friday called Valiant 101 which is meant to be a primer for new readers of the publisher to know where to start.  Toylab Bloggers should be there!


Official Message from Valiant for Denver Comic Con!
From Friday, June 30th to Sunday, July 2nd, Valiant is bringing its cross-country road show to Denver, CO for Denver Comic Con 2017 – and we’re bringing a star-studded line-up of exclusives, programming, and panels for a can’t-miss comics celebration!
All weekend long, join Valiant inside the Colorado Convention Center at booth #1546 to see why Valiant is the award-winning, chart-topping superhero universe to beat with a selection of paperbacks and deluxe hardcovers for critically renowned and award-winning titles including BLOODSHOT REBORNBRITANNIADIVINITY III: STALINVERSEFAITHNINJAKQUANTUM & WOODYSAVAGEX-O MANOWAR (2017) and many more!
And don’t miss the mountains of Valiant merchandise rolling into Denver, including the SECRET WEAPONS #1 DENVER COMIC CON VARIANT, featuring the art of fan-favorite artist Katie Cook (My Little Pony: Friendship is Magic)! THE MUST-READ NEW SERIES of the summer from Academy Award-nominated writer Eric Heisserer(Arrival) and visionary artist Raul Allen (WRATH OF THE ETERNAL WARRIOR) with Patricia Martin (BLOODSHOT REBORN) begins here as the technopathic hero Livewire steps into the fore to lead an extraordinary new team of Harbinger Foundation escapees…and reveals a hidden, high-stakes corner of the Valiant Universe never before explored…
Plus: Be sure to visit the all-star Valiant talent that’s charging into Denver Comic Con 2017 all weekend long, including:
  • Jody Houser (Writer, FAITH, FAITH AND THE FUTURE FORCE)
  • Bart Sears (Artist, BLOODSHOT & H.A.R.D. CORPS, UNITY)
  • Fred Van Lente (Writer, WAR MOTHER, ARCHER & ARMSTRONG)
Then: Your official introduction to Valiant’s award-winning pantheon of heroes begins on Friday, June 30th at 2:30 p.m. MST in room #501 for the VALIANT 101: THE STORY STARTS HERE panel presentation! New to the Valiant Universe? Jump on board right here with a concise and fun-filled introduction to the origins and adventures of Valiant’s greatest and most iconic heroes – from BLOODSHOT and DIVINITY to FAITH and HARBINGER RENEGADE to NINJAK and X-O MANOWAR! From The A.V. Club to Buzzfeed and Entertainment Weekly and dozens more, Valiant has been hailed as the premier superhero publisher in comics today… Now, look no further than this panel of Valiant all-stars to find out where to start!
Finally: Get the inside intel on the most devastating conflict to ever disrupt the Valiant Universe on Saturday, July 1st at 2:30 p.m. MST in room #501 for theVALIANT: THE ROAD TO HARBINGER WARS 2 panel presentation! The road to Valiant’s biggest, most ambitious and impactful comic book event of all time starts right here! Jump on board to find out what the future holds for HARBINGER RENEGADE, X-O MANOWAR, BLOODSHOT, FAITH, DIVINITY, NINJAK, and the rest of Valiant’s most powerful heroes… and how the coming of HARBINGER WARS 2 will soon be felt across the entire Valiant Universe!
We’ll see you in Denver! And don’t miss a moment of the incredible action as Valiant’s cross-country convention road show charges on through Hartford,WantaghSan Diego and more throughout the summer!

Comic Con News

          CNC Machinist A - 1st Shift - Kurt Manufacturing - Pueblo, CO   
College or technical school; Programming and operating CNC machines (Vertical, Horizontal and Lathe) to perform a....
From Kurt Manufacturing - Wed, 21 Jun 2017 19:31:59 GMT - View all Pueblo, CO jobs
          Hourly Paid Teacher in Software Applications Specialist - ACS/AEC - LEA.8F - Vanier College - Vanier, QC   
INTENSIVE DAY PROGRAM – MEQ 12 FOURTH SEMESTER In the following disciplines: 420 Computer Science 420-HSS-VA C++ Programming (90 hours) 420-HST-VA Visual...
From Vanier College - Tue, 27 Jun 2017 17:09:43 GMT - View all Vanier, QC jobs
          (USA-MI-Kalamazoo) Controls Engineer   
Job TitleControls Engineer Job Location Columbus, OH Kalamazoo, MI Toledo, OH DepartmentTOL9743 - FCP Div 97 Elect Controls - Toledo Position TypeContract / Regular Full-Time Position Summary:SSOE Group is seeking an experienced Controls Engineer to plan and direct the scope development, design, PLC/HMI programming, checkout, startup and optimization of control systems for process and packaging systems in food industry.Experience in Food industry with knowledge of cGMPs is preferred. Minimum education and experience: ABET accredited Bachelor Degree in Engineering with 8 years of direct controls engineering experience is required. PE or PE-tracked preferred. Primary Duties and Responsibilities:•The following duties are typical of the position of a Senior Controls Engineer, but are not all encompassing. Responsibilities include those required to deliver quality service on schedule and within budget in a team environment.•Perform and direct the engineering of control systems including the design of MCC single lines, controls panels and electrical schematics.•Development of sequence of operations, PLC programming and HMI programming.•Rockwell FactoryTalk Batch configuration and implementation beneficial, but not required.•Perform construction support, equipment checkout, startup support and operational efficiency development.•Assist in development of engineering proposals including scope, budget and schedule requirements.•Plan, perform and direct the application of standard engineering methods and techniques on work of large single or multidiscipline controls projects under the direction of the Project Manager.•Communicate with the project manager concerning progress or problems related to the project.•Plan, coordinate, and supervise the work effort of junior engineers and designers. Review the work being performed to ensure the application of sound engineering practices and professional judgment. Responsible for implementation of SSOE quality systems.•Write specifications and assist in preparing cost estimates.•Assist with development of construction specifications and construction package documents.•Assist with specification and sizing of control devices and instruments.•Assist with development of performance specifications for equipment vendors, equipment selection and bid tabulations.•Assist with writing and compiling data to include Front-End loading (FEL) documents for client evaluation. These packages consist of control architectures, conceptual design drawings, initial capital estimates, schedules, and technical risk assessments.•Have an understanding of Food Industry Good Manufacturing Practices.Minimum Education and Experience: Bachelor's Degree / DIRECT / 8+OSHA 10/30-hour Construction Certificate preferred.Knowledge, Skills and Abilities:• Will function as project lead on fast paced industrial controls projects.• Experience with Allen Bradley ContolLogix• Experience with Allen Bradley FactoryTalk View SE• Experienced with Wonderware About SSOE GroupAs a Top 10 Engineering / Architecture firm for the past 4 years, SSOE Group focuses on delivering Great Client Service to clients through a full range of project delivery solutions. They have been named a "Great Workplace" (Great Place to Work) and one of the "Best AEC Firms to Work For" (Building Design + Construction).With more than 20 offices around the world, SSOE is known for making its
          IT Manager - Veseys Seeds Ltd - York, PE   
Bachelor’s Degree in Programming, Computer Science or related field would be a major asset. Develop long-term strategic recommendations and plans for digital...
From Indeed - Tue, 20 Jun 2017 18:24:27 GMT - View all York, PE jobs
          OpenCV 3 - Advanced Image Detection and Reconstruction | 342 MB   
OpenCV 3 - Advanced Image Detection and Reconstruction ----- Packt Video Training ----- MP4 | Video: AVC 1280x720 | Audio: AAC 44KHz 2ch | Duration: 1.5 Hours | 342 MB Genre: eLearning | Language: English Making your applications see has never been easier with OpenCV. With it, you can teach your robot how to follow your cat, write a program to correctly identify the members of One Direction, or even help you find the right colors for your redecoration. OpenCV 3 Computer Vision Application Programming Solutions provides a complete introduction to the OpenCV library and explains how to build your first computer vision program. You will be presented with a variety of computer vision algorithms, and exposed to important concepts in image and video analysis, which will enable you to build your own computer vision applications. This video helps you to get started with the OpenCV library, and shows you how to install and deploy it to write effective computer vision applications following good programming practices. You will learn how to read and write images and manipulate their pixels. Different techniques for image enhancement and shape analysis will be presented. You will learn how to detect specific image features such as lines, circles, or corners. You will be introduced to the concepts of mathematical morphology and image filtering. DOWNLOAD: http://nitroflare.com/view/8EB605038F91B71/pds87.OpenCV.3..Advanced.Image.Detection.and.Reconstruction.part1.rar http://nitroflare.com/view/D350A351856E52A/pds87.OpenCV.3..Advanced.Image.Detection.and.Reconstruction.part2.rar http://nitroflare.com/view/344BFC2E6913CBB/pds87.OpenCV.3..Advanced.Image.Detection.and.Reconstruction.part3.rar
          Weekend watchdog   
NBC starts its time covering NASCAR - just in time for Dale Earnhardt Jr's farewell tour.
Junior takes his final trips about the Daytona oval Saturday, starting when the flag drops on NBC at 7:30 p.m.
Earnhardt has posted four victories at Daytona, including the July race months after his father died in a final lap crash at the Daytona 500. He won the July race in 2015 before sitting out the second half of last season.
The Xfinity Series goes Friday at 7:30 p.m. on NBC Sports network.
There's qualifying for both series Friday at 2 p.m.
The Tour de France gets underway Saturday at 9 a.m. on NBC Sports network, with stage two Sunday at 8 a.m.
The Orioles host the Rays for the weekend on MASN.
The Nationals head to St. Louis with Friday's contest at 8 p.m. will be on MASN2, Saturday's game on Fox and Sunday night on ESPN.
Fox also offers the Yankees against the Astros and Indians-Tigers. The Marlins meet the Brewers Saturday at 4 p.m. on FoxSports1.
The PGA tour visits the Washington area this weekend, with coverage on CBS Saturday and Sunday at 3 p.m.
Fox has the final two rounds of the U.S. Senior Open Saturday and Sunday at 1 p.m. The second round is on FoxSports1 Friday at 2 p.m.
The Confederation Cup closes this weekend, with Chile facing Germany at noon on after the third-place game between Mexico and Paraguay at 7 p.m. on FoxSports1.
The United States faces Ghana in an international friendly Saturday at 5 p.m. on ESPN.
Real Salt Lake visits Orlando Friday at 9:30 p.m. on ESPN, then Sporting Kansas City battles Portland Saturday at 7 p.m. Philadelphia faces New England on FoxSports1 Sunday at 5 p.m.
There's a pair of CFL games Friday on ESPN2, with British Columbia taking on Toronto at 7 p.m. before Montreal meets Edmonton at 10 p.m.
Seattle clashes with Connecticut in WNBA play Thursday at 8 p.m. on ESPN2.
NBC Sports network carries the Diamond League track and field meet in Paris Saturday at 2 p.m.
          (USA-MI-Kalamazoo) Programmer (SQL)   
Kalamazoo Community Mental Health and Substance Abuse Services is seeking a Programmer who has experience working with individuals of diverse racial, ethnic, and cultural backgrounds. The Programmer will support the on-going goals and objectives of our Information Technology Services department. The successful candidate will be responsible for performing programming tasks, reports, and fundamental designs to meet the needs of end users. This position offers opportunities to learn new and varied computer skills.A Bachelor’s Degree in Computer Science, Management Information Systems, or equivalent combination of training and experience is required. The successful candidate must have 2 years of experience developing in Microsoft SQL Reporting Services, Analysis Services, and Integration services. Knowledge and experience in Sharepoint, VB.net, C#., Power BI, and/or Web Services development is highly desirable.We offer competitive compensation and fringe benefits, including medical, vision and dental insurance; disability and workers compensation insurance; paid holidays, Paid Time Off plan, continuing education, retirement plan and Deferred Compensation Plan. Individuals of diverse racial, ethnic, and cultural backgrounds along with bilingual candidates are encouraged to apply. KCMHSAS is an equal opportunity employer that encourages diversity and inclusion among its workforce. We strive to empower people to succeed. Physical Requirements / Working Conditions: Physical Efforts – Job demands include prolonged sitting and standing as appropriate. May occasionally require light lifting up to 25 pounds, stooping, kneeling, crouching, or bending as appropriate. Requires coordination of hands and/or eye/hand/foot. Working Conditions – Office environment with noise from computers, copy machine, and telephones. Use of video display terminal (VDT) for periods in excess of 30 minutes at a time. Possible eyestrain from extended periods of viewing VDT. May be exposed to bloodborne pathogens, infectious diseases, and parasites. Travel throughout the Kalamazoo area is required.
          (USA-MI-Albion) Residence Hall Director   
Albion College, a selective, private, residential liberal arts college, invites applications for a Residence Hall Director (RD) position. Main responsibilities include overall administration and management of a residential area of 300-500 students; supervising 10-16 Resident Assistants; serve as a College Hearing Officer adjudicating student judicial cases; participation in an on-call rotating duty system; responding to crisis and emergency situations; establishing rapport/developing positive relationships with students; assisting students with conflict resolution; and community building and educational programming that supports the Division of Student Affairs' residential community based learning. The RD also plays an important part in Office of Residential Life central office functions. This a full-time (12 month) live-in position. Salary is competitive and commensurate with experience - benefits included.h4Qualifications Include:/h4ulliMaster's Degree in college student personnel, counseling, or closely related field preferred. /liliBachelor's degree required./liliPrevious residence hall experience beyond the undergraduate level preferred./liliPrevious supervision and training experience required./liliAbility to work collaboratively with all college constituents./liliThe position requires strong interpersonal, oral, and written communication skills./liliAbility to manage multiple projects simultaneously./liliOutstanding organizational skills./liliOutstanding interpersonal, crisis management and problem-solving skills./liliMust possess a high degree of energy and enthusiasm./liliWillingness to provide a high level of customer service./liliEnthusiasm for teaching and learning that goes beyond the classroom./liliMust have a valid, or be eligible to obtain, a Michigan driver’s license and clearing initial and periodic driving record checks/li/ulh4Application Process:/h4Interested candidates should submit a cover letter, resume, and three references to a href="http://apply.interfolio.com/42703"http://apply.interfolio.com/42703/a. Please direct questions to Ms. Julie McMahon, Director for Residential Life (a href="mailto:jmcmahon@albion.edu"jmcmahon@albion.edu/a). A review of applications will begin immediately and continue until the position is filled. The anticipated start date is July 17, 2017.
          Application Development Manager   
MD-Towson, Job Purpose The Division of Innovation and Applied Research at Towson University is accepting applications for an Application Development Manager. The Application Development Manager works at the highest level of all technical phases of programming; requires a high degree of creative thinking and the ability to use the accumulated knowledge and experience of others. The Application Development Man
          Giant rubber duck makes a splash in Toronto   

The duck has landed.

But not everybody is happy about the six-storey tall rubber duck, weighing over 13 tonnes, that arrived in the harbour Friday morning to kick off a weekend of Canada Day celebrations and the Redpath Waterfront Festival.

The duck, which is said to be the world’s largest and which cost the province $120,000 to rent from July until August, has been the subject of controversy since its participation in the festivities was announced this spring.

Many have taken issue with the expensive price tag, and the fact that it’s not related to anything Canadian.

“As the PC Critic for Tourism, Culture, and Sport, I am not against people enjoying Canada Day festivals and festivities, but what I object to is the government funding a giant rubber duck that has no connection to Ontario or Canada 150,” wrote Conservative MPP Rick Nicholls in a statement Friday.

Christine Van Geyn, director of the Canadian Taxpayers Federation, agreed, and said that spending so much money on a tourist attraction was useless because people would come to the harbourfront anyway.

“They don’t expect the government to spend so much money to draw people to a festival they would have come to anyway,” said Van Geyn.

Steph Braun, a passerby who came to see the duck, said she really enjoyed it.

“I like it, I think its fun and it makes people happy. I guess some people don’t like how much the government spent on it but I think they’re uptight,” Braun said.

Victoria Syme, a co-producer of the Redpath Waterfront Festival, said the organization had actually considered a giant inflatable loon, but dropped the idea after realizing that it would have cost far more money to build and then store.

“We thought we needed something on the water to make a big spectacle. It (the duck) brings tourism, it’s known globally, it’s great with kids and adults,” she said.

The Redpath Waterfront Festival rented the duck for the summer from its co-owners, Craig Samborksi and Ryan Whaley.

“The duck has given us a lot of attention for people who might not have known about the festival,” Syme said. “People can enjoy the duck, not only the duck but the other programming that we have, and maybe it will bring them back in years to come.”

Whaley said the duck was a hit in other places around the world and that the goal was to bring people together and help them enjoy Toronto’s harbour.

“It’s really about bringing smiles and about bringing people together, bringing attention to the waterfront, which is a beautiful backdrop,” said Whaley.

Regarding the design dispute with Studio Florentijn Hofman, which alleged that the giant duck is a counterfeit of the Dutch artist’s work, Whaley said the design for the duck is open and available online.

“You can buy it on the internet,” Whaley said. “But this is the world’s largest.”

Stephanie Saagi, jogged by and took a look.

“It’s such a huge waste of taxpayer money,” Saagi said. “Why is it a duck, why not a beaver?”

The duck, which was inflated over the course of about two and a half hours in the Port Lands Friday morning, will stay in Toronto until Monday afternoon before being deflated and quacking on to Owen Sound, Sault Ste. Marie, Midland, Amherstburg, finishing in Brockville on Aug. 13.


          CNC Production Machinist - Armatec Survivability - Dorchester, ON   
5 years direct experience as a Machinist. The nature of the work is machining production parts and programming for production in the defense industry....
From Armatec Survivability - Sat, 27 May 2017 10:34:40 GMT - View all Dorchester, ON jobs
          VSIX Extension Gallery for Visual Studio   
In a [previous article](/2017/05/vs-itemtemplates-wizards-and-vsix.html) I discussed how to create Item and Project templates and bundle them into their own VSIX installers. However, now that you have your VSIX installer the question becomes how do you distribute it to all your coworkers? It would be great if they could use the _Extensions and Updates_ manager that is already built into Visual Studio. That handles installing, uninstalling, searching and auto-updating extensions. Pretty neat! However the project you have is not suitable to have in a public VSIX repository like the [Visual Studio Marketplace](https://marketplace.visualstudio.com/vs).
The public marketplace is no place for internal company extensions unfortunately.

The public marketplace is no place for internal company extensions unfortunately.

You need to host your own private marketplace. **But how?** TL;DR; I built one # Private Extension Galleries Microsoft has [addressed this issue](https://blogs.msdn.microsoft.com/visualstudio/2011/10/03/private-extension-galleries-for-the-enterprise/) but only through documentaton. There are no concrete implementations available from Microsoft nor any others on how to host and serve these files. Neither is there a simple way to leverage the advanced features the Extension Manager provides (such as search, ratings and download counts). ## So what is available? Unfortunately the commercial offerings are incredibly limited. The main one [myget.org](https://www.myget.org) is purely online and regretfully not free. The popular [Nexus Repository](https://www.sonatype.com/nexus-repository-oss) by Sonatype dropped support for VSIX files in their latest version (v3). There are some [half-automated](https://github.com/garrettpauls/VSGallery.AtomGenerator) solutions out there, others [very manual](https://www.codeproject.com/Articles/881890/Your-Private-Extension-Gallery). The worst thing about most of the automatic offerings is that they require being run on an [existing webserver](http://blog.ehn.nu/2012/11/using-private-extension-galleries-in-visual-studio-2012/) (IIS, Apache, Ngix, etc) and require a relational database system to store data. So there really is no freely available out-of-the-box solution available. **Until now...** # Introducing vsgallery
The VS-Gallery running inside of Visual Studio's Extension Manager

The VS-Gallery running inside of Visual Studio's Extension Manager

With the current rise in popularity of [_the Microservice_](https://en.wikipedia.org/wiki/Microservices) I found it really disappointing that a simple click-to-run solution wasn't available to run a private Visual Studio Marketplace. I wanted something simple and self-contained that could be run without installing and configuring multiple other systems (such as a webserver and a database system). ## The VS Gallery solution Before I bore you with more text, go ahead and test [_vsgallery_](https://github.com/sverrirs/vsgallery) out. Just download the latest release and run the executable file. It is really that super simple. I promise! Download vsgallery **vsgallery** is a single executable file which acts as a complete self hosted extension gallery for Visual Studio 2010 and newer. It really is ultra simple to configure and run. You are up and running in a few seconds. All for the low low price of **FREE**! The whole system runs as a single self-contained executable and uses no database. All files and data are stored on the local file system which makes maintenance and backup super simple.
## Features * Fully featured Extension Gallery ready to use in Microsoft Visual Studio. * Counts downloads of extensions * Displays star ratings, release notes and links to project home pages * Offers a simple to use REST API to submit ratings and upload new VSIX packages * Atom and JSON feeds for available packages * It's FREE! # How to install into Visual Studio In Visual Studio ``` Tools > Options > Environment > Extensions and Updates ``` Add a new entry and copy in the URL of the main Microservice Atom Feed. > By default the URL is `http://YOUR_SERVER:5100/feeds/atom.xml`
Please consult [this MSDN document](https://msdn.microsoft.com/en-us/library/hh266746.aspx) for any further details and alternative options on how to install a Private Extension Gallery in Visual Studio. # How it works The microservice is configured via the `config.ini` file that sits in the same folder as the main executable. The `.vsix` files, along with their download counts and ratings data are stored in a subfolder of the main service executable `VsixStorage/` (this subfolder is configurable). This makes taking backups and moving the service between machines super easy as the root folder contains the entire Microservice state and data. ``` root-folder |--vsgallery.exe |--config.ini |--VsixStorage |--atom.xml |--First.vsix |--Second.vsix |--AndSoForth.vsix ``` Latest release # The vsgallery API The Microservice comes with a rich HTTP based API. You can plug the data and its functionality directly into your development portal or company intranet with minimal web programming. Even direct integration into your continuous integration platforms and communication pipelines such as #slack are possible. > The `vsix_id` required by many of the endpoints can be obtained by reading the `id` field in the feed endpoints. ### [GET] /feeds/atom.xml This is the main entry point for the VSIX feed and serves up the Syndicate-Feed compatible Atom file containing all available extensions on the server. **This is the URL endpoint that should be used in Visual Studio.** See [How to install into Visual Studio](#how-to-install) for more information. ### [GET] /api/ratings/{vsix_id} Retrieves the rating value and vote count for a particular VSIX package by its ID. ``` curl -X GET http://VSGALLERY_SERVER:5100/api/ratings/VSIX_ID ``` The return type is the following JSON ``` { "rating": 4.3, "count": 19 } ``` ### [POST/PUT] /api/ratings/{vsix_id} Submitting rating values for a particular VSIX package by its ID. The post payload should be just raw string and contain a single floating point value in the range between [0.0, 5.0]. The example below will post a rating of `3.5` stars to VSIX package with the id `VSIX_ID` ``` curl -X POST -H "Content-Type: text/plain" --data "3.5" http://VSGALLERY_SERVER:5100/api/ratings/VSIX_ID ``` ### [GET] /api/json JSON feed for the entire package catalog. Same data that is being fed through the atom feed but just in a handier JSON format. ### [POST/PUT] /api/upload This endpoint accepts form-data uploads of one or more .vsix files to the hosting service. The example below will upload the file `my.vsix` to the gallery server and propose a new name for it `renamed.vsix` (you can omit the filename param to use the original name) ``` curl -X POST --form "file=@my.vsix;filename=renamed.vsix" http://VSGALLERY_SERVER:5100/api/upload ``` To upload multiple files simply add more form elements. The example below uploads two VSIX files at the same time. ``` curl -X POST --form "file1=@my.vsix" --form "file1=@your.vsix" http://VSGALLERY_SERVER:5100/api/upload ``` # Closing So if you're searching for a simple solution for your internal, low traffic, extension gallery then please consider **vsgallery**. If you do try it out, please leave me feedback in the comments below. Peace! vsgallery
          R. v. J.S., 2017 YKTC 23 (CanLII)   
alcohol — sexual assault — custody — non-custodial disposition — programming
          R. v. Skea, 2017 YKTC 15 (CanLII)   
conditional sentence — programming — spousal violence — alcohol — discharge
          2010 Books In Review   

Well, my goal this year was to cut back my reading and I somewhat succeeded. I only read 44 books in 2010, but I saved a lot of time by not writing reviews for most of them. Here’s the list for the year, with links to the ones I have written a review for at this time.

  1. Open Sources 2.0 Edited By Chris DiBona, Danese Cooper, and Mark Stone
  2. The Mythical Man-Month By Frederick Brooks
  3. The Innovator’s Dilemma By Clayton Christensen
  4. Predictably Irrational By Dan Ariely
  5. The Cluetrain Manifesto By Rick Levine, Christopher Locke, Doc Searls, and David Weinberger
  6. The Greatest Benefit to Mankind: A Medical History of Humanity By Roy Porter
  7. Ender’s Game By Orson Scott Card
  8. Guns, Germs, and Steel: The Fates of Human Societies By Jared Diamond
  9. The Future of Ideas: The Fate of the Commons in a Connected World by Lawrence Lessig
  10. The Stand By Stephen King
  11. Biobazaar: The Open Source Revolution and Biotechnology By Janet Hope
  12. The Drawing of the Three: The Dark Tower #2 By Stephen King
  13. The New Complete Joy of Homebrewing By Charile Papazian
  14. The Complete Stories: Volume 1 By Isaac Asimov
  15. Neuromancer By William Gibson
  16. Count Zero By William Gibson
  17. Mona Lisa Overdrive By William Gibson
  18. In Defense of Food: An Eater’s Manifesto By Michael Pollan
  19. The Waste Lands: The Dark Tower #3 By Stephen King
  20. The Dilbert Principle By Scott Adams
  21. Wizard and Glass By Stephen King
  22. Wolves of the Calla By Stephen King
  23. The Song of Susannah By Stephen King
  24. ‘Salem’s Lot By Stephen King
  25. The Dark Tower By Stephen King
  26. The Red Thread of Passion By David Guy
  27. The Cathedral & the Bazaar By Eric Raymond
  28. NurtureShock By Po Bronson and Ashley Merryman
  29. Capitalism, Socialism, and Democracy By Joseph Schumpeter
  30. Sex at Dawn By Christopher Ryan and Cacilda Jetha
  31. Innovation Happens Elsewhere (Did not finish)
  32. Effective C# By Bill Wagner
  33. More Effective C# By Bill Wagner
  34. Programming in Scala By Martin Odersky
  35. Foundation By Isaac Asimov
  36. Foundation and Empire By Isaac Asimov
  37. Second Foundation By Isaac Asimov
  38. Dr. Kinsey and the Institute for Sex Resarch By Wardell Pomeroy
  39. Pain: The Fifth Vital Sign By Marni Jackson
  40. Programming Perl, 3rd Edition By Larry Wall, Tom Christiansen, & Jon Orwant
  41. Joel on Software By Joel Spolsky
  42. Listening To Prozac By Peter D. Kramer
  43. Songs of Distant Earth By Arthur C. Clarke
  44. Speaker for the Dead By Orson Scott Card

          From C# To Perl: Readability   

Let’s talk about readability. It’s a fact that code is read far more often than written. Listening to the Perl community, you would think that it is the most readable computer language ever devised. Larry Wall loves to talk about linguistics and applied some of his knowledge on the subject when creating Perl. The result was… interesting.

Waste No Keys

How many keys does your keyboard have? Want to use a language that seems to go out of it’s way to find a use for every one of them? Perl favors terseness over readability to almost a pathological point. This is exemplified in its use of magic variables. You can find a full list of them here. Now imagine reading a code base that uses any significant fraction of them. To be fair many of them are almost never used. Even seasoned Perl hackers would have to look them up. Also, you can see in the documentation that they also have readable aliases. If you are using any of the obscure ones you should probably use the alias instead.

On a related note Perl seems to have inherited from C the almost pathological need to abbreviate. C system code tends to abbreviate variable names to the point of confusion if you aren’t familiar with the codebase. Perl programmers seem to carry this over into non-system code. I’m a big believer in Domain Driven Design, which states as one of its tenets that you should speak the same language as your users. This should carry over into your code. Once again, when I come back to a codebase six months from now I don’t want to have to think about what that abbreviation was for. Sometimes you can save too many keystrokes.

Ambiguity

Perl gurus often seem to highlight the fact that their language is closer to natural language than most. They consider this to be A Good Thing. I don’t. Natural language is messy, ambiguous, and full of nuance. I want my code to be as clean, clear, and straightforward as possible. If this comes at the expense of succinctness, so be it. I’m writing this code once. Others (and me) will be reading it many times. This is one reason any scientific field of study comes with its own jargon. The goal is to eliminate as much of the ambiguity as possible by distancing itself from natural language.

In contrast, the foundation of C#’s syntax comes from the C/C++/Java model. I don’t find anything inherently superior to this syntax (it is pretty dominant though), but one thing it does not suffer from is ambiguity.

TMTOWTDI

This is where I feel readability suffers the most. Perl’s motto of There’s More Than One Way To Do It encourages significant fragmentation of what are built-in concepts in other languages. For example, there are countless different modules to write object-oriented code. Perl5 has a half-assed OO implementation, leaving it up to module writers to provide most of it. This means that you can have considerable Perl experience but stumble upon a code base that looks like nothing you have seen before. A Perl developer using Moose might as well be writing a different a language.

However, this could be an advantage if you wish to define any sort of DSL, something that is difficult at best to do in C#. Most C# programmers who wish to define a DSL are best served to learn Boo), another language that runs on the .NET framework that is much better suited to the purpose. A true DSL is also difficult in Perl though. The closest I have seen so far is something like Moose, which looks like a DSL in parts. To contrast with another language, before learning Perl I was working with Scala, which through the use of some advanced features allows you to easily define a DSL. To a user it simply looks like you defined new keywords.


To a large extent readability comes down to what you are used to so of course C# is more readable to me right now than Perl. However, some of these issues have nothing to do with my lack of Perl experience (such as pathological abbreviating). Some of the Perl community recognizes these problems. There seems to a sharp divide between traditional Perl users and a group that prefers to use what it calls Modern Perl. Put me in the modern camp.


          Product Verification Engineer - Evertz - Ontario   
Proficient with Linux and high level programming or scripting languages such as Python. We are expanding our Product Verification team and looking for...
From Evertz - Fri, 24 Mar 2017 05:42:40 GMT - View all Ontario jobs
          Network Engineer - (Worcester)   
Information Technology/Information SystemsWorcester, MassachusettsDescriptionPosition Summary: This position will have full responsibility for all LAN, WAN and external connectivity administration. Responsible for network design, architecture & programming. Server administration and troubleshooting.
          Software Engineer - (Cambridge)   
About the role and the team This is an exciting opportunity to join a fast growing team in the heart of Kendall Square We provide multiplex assays to medical researchers around the world Software to design experiments analyze instrument data and present the results is an essential component of the product We are in the process of expanding the set of software tools that will be available to our customers This opportunity is for a software engineer to develop and support web based applications The candidate will work as part of a small team of software developers to deliver and support applications for in house scientists and business development team members as well as users at customer sites Our end users are typically wet lab biologists a key design goal is simplifying the user experience delivering sophisticated and high quality data analysis without need for scripting or programming on their part Applications include textual analysis of biological literature online database mining for assay interpretation and statistically based experiment design tools The tool http www fireflybio com portal search provides a flavor of our work About you You should have a demonstrated ability to work and think independently and creatively Our development projects are not delivered with detailed specifications but as user requests to be solved by whatever means most appropriate So you will be expected to understand and explore the design space of alternative solutions You should be able to recognize requests in the larger context of platform development and deliver special requests as part of a new general capability You will have a passion for writing elegant compact maintainable code If this sounds like you please read on and apply Minimum Qualifications Bachelora s Degree in Computer Science or an engineering scientific discipline years of extensive programming experience yearsa experience with designing building extending and maintaining mid scale software systems Preferred Qualifications Familiarity with object oriented development in Java data structures collections design patterns garbage collection multithreading Web application experience with at least one modern MVW Toolkit eg Django Rails NodeJS Spring in a modern programming language eg Java Python Ruby Scala JS A track record of finishing projects meeting deadlines and getting things done Proven ability to work independently and multitask Friendly positive self motivated and a team player Effective written and verbal communication skills Background in health care bioinformatics genetics genomics molecular biology Experience with regression testing developer documentation end user documentation and version control is expected Fundamental understanding of applied math and or statistics Proficiency in Scala or prior exposure to functional programming via a language such as Lisp or Scheme About Us Ever since when our founder Jonathan Milner started selling antibodies from the back of his bike Abcam has aimed to help scientific researchers make breakthroughs faster We now have offices and labs in the UK the US China and Japan and as we continue to grow we remain ambitious driven by our customersa success and their research needs Ita s our goal to provide a world standard in protein research tools technical support and delivery When you join Abcam youa ll join a global business with the passion and the vision to become the most influential company and best loved brand in life sciences Our culture is our key differentiator We believe in empowering individuals with responsibility given at an early stage The working environment is fun and fast paced collaborative and outcome focused with a strong customer focus In addition to competitive salaries we can offer an attractive flexible benefits package which includes share options a culture focused on wellbeing and opportunities for growth and development Abcam is an Equal Opportunity Employer and makes all employment decisions without regard to age national origin race ethnicity religion creed gender sexual orientation disability veteran status or any other characteristic protected by law Source: http://www.juju.com/jad/000000009jikil?partnerid=af0e5911314cbc501beebaca7889739d&exported=True&hosted_timestamp=0042a345f27ac5dc69354e46c76daa485f5433b1779459d32f1da485eef8e872
          Cyber Security Engineer - (Newton)   
Job DescriptionWant to work for a dynamic company that feels nice and compact but boasts the perks of companies several times its size? With its rapid growth and global nature, Octo may be the place for you! Octo Telematics, NA is seeking a Cyber Security Engineer to design, test, implement and monitor security measures for OctoA cents € (TM) s Systems.Responsibilities:A' . Analyze and establish security requirements for OctoA cents € (TM) s systems/networksA' . Defend systems against unauthorized access, modification and/or destructionA' . Configure and support security tools such as firewalls, anti-virus software, patch management systems, etc.A' . Define access privileges, control structures and resourcesA' . Perform vulnerability testing, risk analyses and security assessmentsA' . Identify abnormalities and report violationsA' . Oversee and monitor routine security administrationA' . Develop and update business continuity and disaster recovery protocolsA' . Train fellow employees in security awareness, protocols and proceduresA' . Design and conduct security audits to ensure operational securityA' . Respond immediately to security incidents and provide post-incident analysisA' . Research and recommend security upgradesA' . Provide technical advice to colleaguesQualifications:A' . Bachelor in Computer Science, Cyber Security or a related technical fieldA' . 5 years plus experience in Cyber SecurityA' . 5 years plus experience in Cyber SecuritySecurity Expertise:A' . Expertise in security technology with one r more product certification in (BlueCoat, Cisco, SonicWall, Damballa, IBM, Kapersky, MSAB, Microsoft AD, TippingPoint, F5, VMware)TCP/IP, computer networking, routing and switchingDLP, anti-virus and anti-malwareFirewall and intrusion detection/prevention protocolsSecure coding practices, ethical hacking and threat modelingWindows, UNIX and Linux operating systemsISO 27001/27002, ITIL and COBIT frameworksPCI, HIPAA, NIST, GLBA and SOX compliance assessmentsC, C++, C#, Java or PHP programming languagesSecurity and Event Management (SIEM)Desirable Security Certifications:A' . Security+: CompTIAA cents € (TM) s popular base-level security certificationA' . CCNA: Cisco Certified Network Associate - Routing and SwitchingA' . CEH: Certified Ethical HackerA' . GSEC / GCIH / GCIA: GIAC Security CertificationsA' . CISSP: Certified Information Systems Security Professional Company DescriptionOCTO NA is a global leader in software and data analytics for the insurance and auto markets, with over four million connected users worldwide and a vast database of 380 billion km of driving data.
          Software Engineer IV - (Newton)   
Software Engineer IVQualifications: * Bachelor's Degree in Computer Science, Electrical Engineering or other Related Technical Degree * 5+ years' experience with enterprise application development with Java * Strong foundation in the object-oriented programming paradigm * Proficiency with Domain Driven Design * Amazon Web Services-specific experience o Developing applications in AWS Lambda with Java 8 o Experience using Kinesis analytics, SNS, RedShift o General understanding of AWS managed services * Proficiency with Junit and experience in developing test cases for applications deployed on AWS managed services * Proficient with Git / GitHub * Understanding of and comfortable with DevOps ways of working * Good understanding of the Software Development Life-Cycle * Flexible and open to changing needs and expectations * Able to collaborate and work effectively in a team environment * Excellent communication skillsRedshift AWS, Java, OOP Source: http://www.juju.com/jad/000000009qgq4v?partnerid=af0e5911314cbc501beebaca7889739d&exported=True&hosted_timestamp=0042a345f27ac5dc0413802e189be385daf54a16310431f6ff8f92f7af39df48
          Programmer - (Waltham)   
Senior Statistical Programmer II Develop statistical programs in SAS to generate clinical datasets, tables, listings and figures. Perform validation and QC of the programs, datasets and statistical reports per study requirements. Responsible for study closeout and providing submission-ready statistical programming deliverables to the client.
          Software Development Engineer in Test - Folio - (Ipswich)   
SkillsRequirements:5+ yrs Java & Object Oriented Design/ProgrammingImplementation of 1 or more production RESTful interfaces in a microservices model2+ yrs product implementation experience with databases, both SQL and NoSQL ? PostgreSQL specifically is a plus2+ yrs product implementation experience in a cloud computing environment ? AWS specifically is a plus3+ yrs experience using Agile and/or SAFePreferred Qualifications:CI/CD using (eg) Jenkins, Maven, GradleSCM - Git/GitHubTest Driven Development (TDD) and Automated Unit TestingDeveloping automated integration and acceptance testsAutomating UI testing (eg Selenium, Sauce Labs)Developing performance and load tests at high scale (eg JMeter)General HTTP knowledge including familiarity with cURL or similar toolsLinux ? general knowledge, shell scripting ? RedHat/Amazon Linux specifically is a plusVirtualization ? Docker, Vagrant, etc.Open Source Software ? general knowledge SW dev model, experience contributing toRAML, JSON, XMLJavaScript and related tools/frameworks ? Both client-side and server-side - React, Node.js, webpack, npm/yarn, etc.Security related experience ?SSO, OAuth, SAML, LDAP, etc.Logging/Monitoring/Alerting/Analytics ? SumoLogic, Datadog, collectd, SNMP, JMX, etc.Why the North Shore of Boston and EBSCO are great places to live and work!Here at EBSCO we will provide relocation assistance to the best and brightest people. We are 45 minutes outside of Boston just minutes from the beach in Ipswich, MA. Ipswich is a part of the North Shore and contains a wide variety of locally owned shops, restaurants, and farms.
          Why Would People Want Fine Art Trained Machine Learning Models   

I'm spending time on my algorithmic rotoscope work, and thinking about how the machine learning style textures I've been marking can be put to use. I'm trying to see things from different vantage points and develop a better understanding of how texture styles can be put to use in the regular world.

I am enjoying using image style filters in my writing. It gives me kind of a gamified layer to my photography and drone hobby that allows me to create actual images I can use in my work as the API Evangelist. Having unique filtered images available for use in my writing is valuable to me--enough to justify the couple hundreds of dollars I spend each month on AWS servers.

I know why I like applying image styles to my photos, but why do others? Most of the image filters out there we've seen from apps like Prisma are focused on fine art. Training image style transfer machine learning models on popular art that people are already familiar with. I guess this is allows people to apply the characteristics of art they like to the photographic layer of our increasingly digital lives.

To me, it feels like some sort of art placebo. A way of superficially and algorithmic injecting what are brain tells us is artsy to our fairly empty, digital photo reality. Taking photos in real time isn't satisfying enough anymore. We need to distract ourselves from the world by applying reality to our digitally documented physical world--almost the opposite of augmented reality if there is such a thing. Getting lost in the ability to look at the real world through the algorithmic lens of our online life.

We are stealing the essence the meaningful, tangible art from our real world, and digitizing it. We take this essense and algorithmically apply it our everyday life trying to add some color, some texture, but not too much. We need the photos to still be meaningful, and have context in our life, but we need to be able to spray an algorithmic lacquer of meaning on our intangible lives.

The more filters we have, the more lenses we have to look at the exact same moment we live each day. We go to work. We go to school. We see the same scenery, the same people, and the same pictures each day. Now we are able to algorithmic shift, distort, and paint the picture of our lives we want to see.

Now we can add color to our life. We are being trained to think we can change the palette, and are in control over our lives. We can colorize the old World War 2 era photos of our day, and choose whether we want to color within, or outside the lines. Our lives don't have to be just binary 1s and 0s, and black or white.

Slowly, picture by picture, algorithmic transfer by algorithmic transfer, the way we see the world changes. We no longer settle for the way things are, the way our mobile phone camera catches it. The digital version is the image we share with my friends, family, and the world. It should always be the most brilliant, the most colorful, and the painting that catches their eye and makes them stand in front of on the wall of your Facebook feed captivated.

We no longer will remember what reality looks like, or what art looks like. Our collective social media memory will dictate what the world looks like. The number of likes will determine what is artistic, and what is beautiful or ugly. The algorithm will only show us what images match the world it wants us to see. Algorithmically, artistically painting the inside walls of our digital bubble.

Eventually, the sensors that stimulate us when we see photos will be well worn. They will be well programmed, with known inputs, and predictable outputs. The algorithm will be able to deliver exactly what we need, and correctly predict what we will need next. Scheduling up and queuing the next fifty possible scenarios--with exactly the right colors, textures, and meaning.

How we see art will be forever changed by the algorithm. Our machines will never see art. Our machines will never know art. Our machines will only be able to transfer the characteristics we see and deliver them into newer, more relevant, timely, and meaningful images. Distilling down the essence of art into binary, and programming us to think this synthetic art is meaningful, and still applies to our physical world.

Like I said, I think people like applying artistic image filters to their mobile photos because it is the opposite of augmented reality. They are trying to augment their digital (hopes of reality) presence with the essence of what we (algorithm) think matters to use in the world. This process isn't about training a model to see art like some folks may tell you. It is about distilling down some of the most simple aspects of what our eyes see as art, and give this algorithm to our mobile phones and social networks to apply to the photograph digital logging of our physical reality.

It feels like this is about reprogramming people. It is about reprogramming what stimulates you. Automating an algorithmic view of what matters when it comes to art, and applying it to a digital view of matters in our daily worlds, via our social networks. Just one more area of our life where we are allowing algorithms to reprogram us, and bend our reality to be more digital.

I Borrowed This Image From University of Maine Museum of Art


          Integer Programming   

          Andy Wingo: guile 2.2 omg!!!   

Oh, good evening my hackfriends! I am just chuffed to share a thing with yall: tomorrow we release Guile 2.2.0. Yaaaay!

I know in these days of version number inflation that this seems like a very incremental, point-release kind of a thing, but it's a big deal to me. This is a project I have been working on since soon after the release of Guile 2.0 some 6 years ago. It wasn't always clear that this project would work, but now it's here, going into production.

In that time I have worked on JavaScriptCore and V8 and SpiderMonkey and so I got a feel for what a state-of-the-art programming language implementation looks like. Also in that time I ate and breathed optimizing compilers, and really hit the wall until finally paging in what Fluet and Weeks were saying so many years ago about continuation-passing style and scope, and eventually came through with a solution that was still CPS: CPS soup. At this point Guile's "middle-end" is, I think, totally respectable. The backend targets a quite good virtual machine.

The virtual machine is still a bytecode interpreter for now; native code is a next step. Oddly my journey here has been precisely opposite, in a way, to An incremental approach to compiler construction; incremental, yes, but starting from the other end. But I am very happy with where things are. Guile remains very portable, bootstrappable from C, and the compiler is in a good shape to take us the rest of the way to register allocation and native code generation, and performance is pretty ok, even better than some natively-compiled Schemes.

For a "scripting" language (what does that mean?), I also think that Guile is breaking nice ground by using ELF as its object file format. Very cute. As this seems to be a "Andy mentions things he's proud of" segment, I was also pleased with how we were able to completely remove the stack size restriction.

high fives all around

As is often the case with these things, I got the idea for removing the stack limit after talking with Sam Tobin-Hochstadt from Racket and the PLT group. I admire Racket and its makers very much and look forward to stealing fromworking with them in the future.

Of course the ideas for the contification and closure optimization passes are in debt to Matthew Fluet and Stephen Weeks for the former, and Andy Keep and Kent Dybvig for the the latter. The intmap/intset representation of CPS soup itself is highly endebted to the late Phil Bagwell, to Rich Hickey, and to Clojure folk; persistent data structures were an amazing revelation to me.

Guile's virtual machine itself was initially heavily inspired by JavaScriptCore's VM. Thanks to WebKit folks for writing so much about the early days of Squirrelfish! As far as the actual optimizations in the compiler itself, I was inspired a lot by V8's Crankshaft in a weird way -- it was my first touch with fixed-point flow analysis. As most of yall know, I didn't study CS, for better and for worse; for worse, because I didn't know a lot of this stuff, and for better, as I had the joy of learning it as I needed it. Since starting with flow analysis, Carl Offner's Notes on graph algorithms used in optimizing compilers was invaluable. I still open it up from time to time.

While I'm high-fiving, large ups to two amazing support teams: firstly to my colleagues at Igalia for supporting me on this. Almost the whole time I've been at Igalia, I've been working on this, for about a day or two a week. Sometimes at work we get to take advantage of a Guile thing, but Igalia's Guile investment mainly pays out in the sense of keeping me happy, keeping me up to date with language implementation techniques, and attracting talent. At work we have a lot of language implementation people, in JS engines obviously but also in other niches like the networking group, and it helps to be able to transfer hackers from Scheme to these domains.

I put in my own time too, of course; but my time isn't really my own either. My wife Kate has been really supportive and understanding of my not-infrequent impulses to just nerd out and hack a thing. She probably won't read this (though maybe?), but it's important to acknowledge that many of us hackers are only able to do our work because of the support that we get from our families.

a digression on the nature of seeking and knowledge

I am jealous of my colleagues in academia sometimes; of course it must be this way, that we are jealous of each other. Greener grass and all that. But when you go through a doctoral program, you know that you push the boundaries of human knowledge. You know because you are acutely aware of the state of recorded knowledge in your field, and you know that your work expands that record. If you stay in academia, you use your honed skills to continue chipping away at the unknown. The papers that this process reifies have a huge impact on the flow of knowledge in the world. As just one example, I've read all of Dybvig's papers, with delight and pleasure and avarice and jealousy, and learned loads from them. (Incidentally, I am given to understand that all of these are proper academic reactions :)

But in my work on Guile I don't actually know that I've expanded knowledge in any way. I don't actually know that anything I did is new and suspect that nothing is. Maybe CPS soup? There have been some similar publications in the last couple years but you never know. Maybe some of the multicore Concurrent ML stuff I haven't written about yet. Really not sure. I am starting to see papers these days that are similar to what I do and I have the feeling that they have a bit more impact than my work because of their medium, and I wonder if I could be putting my work in a more useful form, or orienting it in a more newness-oriented way.

I also don't know how important new knowledge is. Simply being able to practice language implementation at a state-of-the-art level is a valuable skill in itself, and releasing a quality, stable free-software language implementation is valuable to the world. So it's not like I'm negative on where I'm at, but I do feel wonderful talking with folks at academic conferences and wonder how to pull some more of that into my life.

In the meantime, I feel like (my part of) Guile 2.2 is my master work in a way -- a savepoint in my hack career. It's fine work; see A Virtual Machine for Guile and Continuation-Passing Style for some high level documentation, or many of these bloggies for the nitties and the gritties. OKitties!

getting the goods

It's been a joy over the last two or three years to see the growth of Guix, a packaging system written in Guile and inspired by GNU stow and Nix. The laptop I'm writing this on runs GuixSD, and Guix is up to some 5000 packages at this point.

I've always wondered what the right solution for packaging Guile and Guile modules was. At one point I thought that we would have a Guile-specific packaging system, but one with stow-like characteristics. We had problems with C extensions though: how do you build one? Where do you get the compilers? Where do you get the libraries?

Guix solves this in a comprehensive way. From the four or five bootstrap binaries, Guix can download and build the world from source, for any of its supported architectures. The result is a farm of weirdly-named files in /gnu/store, but the transitive closure of a store item works on any distribution of that architecture.

This state of affairs was clear from the Guix binary installation instructions that just have you extract a tarball over your current distro, regardless of what's there. The process of building this weird tarball was always a bit ad-hoc though, geared to Guix's installation needs.

It turns out that we can use the same strategy to distribute reproducible binaries for any package that Guix includes. So if you download this tarball, and extract it as root in /, then it will extract some paths in /gnu/store and also add a /opt/guile-2.2.0. Run Guile as /opt/guile-2.2.0/bin/guile and you have Guile 2.2, before any of your friends! That pack was made using guix pack -C lzip -S /opt/guile-2.2.0=/ guile-next glibc-utf8-locales, at Guix git revision 80a725726d3b3a62c69c9f80d35a898dcea8ad90.

(If you run that Guile, it will complain about not being able to install the locale. Guix, like Scheme, is generally a statically scoped system; but locales are dynamically scoped. That is to say, you have to set GUIX_LOCPATH=/opt/guile-2.2.0/lib/locale in the environment, for locales to work. See the GUIX_LOCPATH docs for the gnarlies.)

Alternately of course you can install Guix and just guix package -i guile-next. Guix itself will migrate to 2.2 over the next week or so.

Welp, that's all for this evening. I'll be relieved to push the release tag and announcements tomorrow. In the meantime, happy hacking, and yes: this blog is served by Guile 2.2! :)


          Sebastian Dröge: Writing GStreamer Elements in Rust (Part 3): Parsing data from untrusted sources like it’s 2016   

This is part 3, the older parts can be found here: part 1, part 2 and part 4

And again it took quite a while to write a new update about my experiments with writing GStreamer elements in Rust. The previous articles can be found here and here. Since last time, there was also the GStreamer Conference 2016 in Berlin, where I had a short presentation about this.

Progress was rather slow unfortunately, due to work and other things getting into the way. Let’s hope this improves. Anyway!

There will be three parts again, and especially the last one would be something where I could use some suggestions from more experienced Rust developers about how to solve state handling / state machines in a nicer way. The first part will be about parsing data in general, especially from untrusted sources. The second part will be about my experimental and current proof of concept FLV demuxer.

Parsing Data

Safety?

First of all, you probably all saw a couple of CVEs about security relevant bugs in (rather uncommon) GStreamer elements going around. While all of them would’ve been prevented by having the code written in Rust (due to by-default array bounds checking), that’s not going to be our topic here. They also would’ve been prevented by using various GStreamer helper API, like GstByteReader, GstByteWriter and GstBitReader. So just use those, really. Especially in new code (which is exactly the problem with the code affected by the CVEs, it was old and forgotten). Don’t do an accountant’s job, counting how much money/many bytes you have left to read.

But yes, this is something where Rust will also provide an advantage by having by-default safety features. It’s not going to solve all our problems, but at least some classes of problems. And sure, you can write safe C code if you’re careful but I’m sure you also drive with a seatbelt although you can drive safely. To quote Federico about his motivation for rewriting (parts of) librsvg in Rust:

Every once in a while someone discovers a bug in librsvg that makes it all the way to a CVE security advisory, and it’s all due to using C. We’ve gotten double free()s, wrong casts, and out-of-bounds memory accesses. Recently someone did fuzz-testing with some really pathological SVGs, and found interesting explosions in the library. That’s the kind of 1970s bullshit that Rust prevents.

You can directly replace the word librsvg with GStreamer here.

Ergonomics

The other aspect with parsing data is that it’s usually a very boring aspect of programming. It should be as painless as possible, as easy as possible to do it in a safe way, and after having written your 100th parser by hand you probably don’t want to do that again. Parser combinator libraries like Parsec in Haskell provide a nice alternative. You essentially write down something very close to a formal grammar of the format you want to parse, and out of this comes a parser for the format. Other than parser generators like good, old yacc, everything is written in target language though, and there is no separate code generation step.

Rust, being quite a bit more expressive than C, also made people write parser generator libraries. They are all not as ergonomic (yet?) as in Haskell, but still a big improvement over anything else. There’s nom, combine and chomp. All having a slightly different approach. Choose your favorite. I decided on nom for the time being.

A FLV Demuxer in Rust

For implementing a demuxer, I decided on using the FLV container format. Mostly because it is super-simple compared to e.g. MP4 and WebM, but also because Geoffroy, the author of nom, wrote a simple header parsing library for it already and a prototype demuxer using it for VLC. I’ll have to extend that library for various features in the near future though, if the demuxer should ever become feature-equivalent with the existing one in GStreamer.

As usual, the code can be found here, in the “demuxer” branch. The most relevant files are rsdemuxer.rs and flvdemux.rs.

Following the style of the sources and sinks, the first is some kind of base class / trait for writing arbitrary demuxers in Rust. It’s rather unfinished at this point though, just enough to get something running. All the FLV specific code is in the second file, and it’s also very minimal for now. All it can do is to play one specific file (or hopefully all other files with the same audio/video codec combination).

As part of all this, I also wrote bindings for GStreamer’s buffer abstraction and a Rust-rewrite of the GstAdapter helper type. Both showed Rust’s strengths quite well, the buffer bindings by being able to express various concepts of the buffers in a compiler-checked, safe way in Rust (e.g. ownership, reability/writability), the adapter implementation by being so much shorter (it’s missing features… but still).

So here we are, this can already play one specific file (at least) in any GStreamer based playback application. But some further work is necessary, for which I hopefully have some time in the near future. Various important features are still missing (e.g. other codecs, metadata extraction and seeking), the code is rather proof-of-concept style (stringly-typed media formats, lots of unimplemented!() and .unwrap() calls). But it shows that writing media handling elements in Rust is definitely feasible, and generally seems like a good idea.

If only we had Rust already when all this media handling code in GStreamer was written!

State Handling

Another reason why all this took a bit longer than expected, is that I experimented a bit with expressing the state of the demuxer in a more clever way than what we usually do in C. If you take a look at the GstFlvDemux struct definition in C, it contains about 100 lines of field declarations. Most of them are only valid / useful in specific states that the demuxer is in. Doing the same in Rust would of course also be possible (and rather straightforward), but I wanted to try to do something better, especially by making invalid states unrepresentable.

Rust has this great concept of enums, also known as tagged unions or sum types in other languages. These are not to be confused with C enums or unions, but instead allow multiple variants (like C enums) with fields of various types (like C unions). But all of that in a type-safe way. This seems like the perfect tool for representing complicated state and building a state machine around it.

So much for the theory. Unfortunately, I’m not too happy with the current state of things. It is like this mostly because of Rust’s ownership system getting into my way (rightfully, how would it have known additional constraints I didn’t know how to express?).

Common Parts

The first problem I ran into, was that many of the states have common fields, e.g.

enum State {
    ...
    NeedHeader,
    HaveHeader {header: Header, to_skip: usize },
    Streaming {header: Header, audio: ... },
    ...
}

When writing code that matches on this, and that tries to move from one state to another, these common fields would have to be moved. But unfortunately they are (usually) borrowed by the code already and thus can’t be moved to the new variant. E.g. the following fails to compile

match self.state {
        ...
        State::HaveHeader {header, to_skip: 0 } => {
            
            self.state = State::Streaming {header: header, ...};
        },
    }

A Tree of States

Repeating the common parts is not nice anyway, so I went with a different solution by creating a tree of states:

enum State {
    ...
    NeedHeader,
    HaveHeader {header: Header, have_header_state: HaveHeaderState },
    ...
}

enum HaveHeaderState {
    Skipping {to_skip: usize },
    Streaming {audio: ... },
}

Apart from making it difficult to find names for all of these, and having relatively deeply nested code, this works

match self.state {
        ...
        State::HaveHeader {ref header, ref mut have_header_state } => {
            match *have_header_state {
                HaveHeaderState::Skipping { to_skip: 0 } => {
                    *have_header = HaveHeaderState::Streaming { audio: ...};
                }
        },
    }

If you look at the code however, this causes the code to be much bigger than needed and I’m also not sure yet how it will be possible nicely to move “backwards” one state if that situation ever appears. Also there is still the previous problem, although less often: if I would match on to_skip here by reference (or it was no Copy type), the compiler would prevent me from overwriting have_header for the same reasons as before.

So my question for the end: How are others solving this problem? How do you express your states and write the functions around them to modify the states?

Update

I actually implemented the state handling as a State -> State function before (and forgot about that), which seems conceptually the right thing to do. It however has a couple of other problems. Thanks for the suggestions so far, it seems like I’m not alone with this problem at least.

Update 2

I’ve went a bit closer to the C-style struct definition now, as it makes the code less convoluted and allows me to just get forwards with the code. The current status can be seen here now, which also involves further refactoring (and e.g. some support for metadata).


          Movie Review: 'The House' has Amy Poehler and Will Ferrell but zero laughs   
"The House" is astonishingly, mystifyingly unamusing. With Will Ferrell and Amy Poehler in lead roles, the comedy could have been solid counterprogramming to summer franchise-mania. Instead, director Andrew Jay Cohen ("Neighbors," "Mike and Dave Need Wedding Dates") delivers one lazy sketch after another, manufactured under the misguided pretense that lewdness and violence are inherently funny.But it takes more than buckets of fake blood and alfresco bathroom adventures to produce [...]
          The best Android app makers for making apps with zero code   
Developing for Android usually requires the use of special software and programming skills, but there are sites that make creating apps fun, fast and easy. Here is my list of the top 5 App creator websites and services.
          (USA-TN-Chattanooga) Data Science Analyst-Enterprise Modeling & Governance Support   
**Description:** This position will focus on the use of information and analytics to improve health and optimize customer and business processes\. It also requires the ability to pair technical and analytical skills to perform day to day job duties\. May also assist in the designing and implementation of systems and use of programming skills to analyze and report insights that drive action\. Assist in the research, validation and development of Predictive models and Identification algorithms\. **Responsibilities:** • Identify, extract, manipulate, analyze and summarize data to deliver insights to business stakeholders\. • Source data can consist of medical and pharmacy claims, program activity and participation data, as well as demographic, census, biometric, marketing and health risk assessment data\. • Perform Model Governance duties such as maintaining a library of Predictive Models and monitoring the model accuracy and performance of these models\. And other required model governance activities\. **Qualifications:** • **Bachelor’s degree in Math, Statistics or Public Health or professional analytical experience\. Qualifying backgrounds include: epidemiologists, quantitative MBAs, quantitative sociologists, data miners, behavioral economists, qualitative researchers, economists, statisticians, or biostatisticians\.** • Strong analytical, communication and technical skills • Problem solving and critical thinking skills • Experience extracting and manipulating large data \(ie: a minimum of 1 million records\) across multiple data platforms\. • Familiarity with healthcare claims data • At least 1 years coding in SAS and/or SQL experience • Familiarity with Hadoop and Teradata coding highly desired\. **US** **Candidates Only** : Qualified applicants will be considered for employment without regard to race, color, religion, national origin, sex, sexual orientation, gender identity, disability, veteran status\. If you require a special accommodation, please visit our Careers website or contact us atSeeYourself@cigna\.com\. **Primary Location:** Bloomfield\-Connecticut **Other Locations:** United States\-North Carolina\-Raleigh, United States\-Colorado\-Greenwood Village, United States\-Tennessee\-Chattanooga, United States\-Pennsylvania\-Philadelphia **Work Locations:** 900 Cottage Grove Road Wilde Bloomfield 06152 **Job:** Bus Ops\-\-Operations Mgmt \(Bus\) **Schedule:** Regular **Shift:** Standard **Employee Status:** Individual Contributor **Job Type:** Full\-time **Job Level:** Day Job **Travel:** Yes, 25 % of the Time **Job Posting:** Jun 29, 2017, 10:35:24 AM
          (USA-TN-Chattanooga) CNC Operator (Third Shift)   
SUMMARYUnder general supervision, sets and adjusts and operates a variety of CNC and manual machining equipment to precisely machine, drill and/or shape steel, brass and aluminum parts to specification by performing the following duties.ESSENTIAL DUTIES AND RESPONSIBILITIESSets and adjusts controls of various CNC machining equipment.Sets up and operates equipment to properly machine parts of various dimensions to pre-determined specifications and tolerances.Reads and interprets blueprints, drawings and other printed material.Performs calculations and operations with decimals, fractions, metrics and associated mathematical data; properly utilizes a variety of hand tools and devices including hammer, wrench, tape measure, vernier calipers, micrometer, depth gauge, file and others.Receives parts from all departments; follows direction of Leadman or higher supervisor and coordinates with other machinists and employees from other departments as necessary.Corrects returned parts as necessary.Checks finished parts for appearance, tolerance and overall specification.Operates forklift to move parts when necessary.Projects a positive company image by interacting with fellow employees, customers and management in a cooperative, supportive and courteous manner; displays a professional attitude; complies with company dress code.Communicates with individuals at all levels within the organization.Documents assigned tasks as required.Performs work according to production schedule and/or supervisorand#39;s directives.Follows all company policies and procedures at all times.Follows proper safety procedures at all times.Wears personal protective equipment as required.Cleans work area daily.Performs other duties as assigned.SUPERVISORY RESPONSIBILITIESThis job has no supervisory responsibilities.QUALIFICATIONSTo perform this job successfully, an individual must be able to perform each essential duty satisfactorily. The requirements listed below are representative of the knowledge, skill and/or ability required. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions.EDUCATION and/or EXPERIENCEMinimum one (1) year of experience operating CNC equipment required. Engineering drawing reading skills a must.Ability to operate a variety of machining equipment preferred.Knowledge of computer hardware and software including applications and programming in order to write programs for CNC equipment a plus.Previous experience programming CNC equipment a plus, preference will be given to applicant who has programming experience on Fanuc Model 310i Series A controls and lathe horizontal machine centers.Heavy equipment manufacturing experience a plus.SKILLS AND ABILITIES REQUIREDAbility to work satisfactorily as a team member.Ability to use a variety of hand tools and devices.Adept at problem solving.Must complete and maintain forklift operation certification and be able to safely operate a forklift if required.OTHER REQUIREMENTSMust be eighteen (18) years of age or older.Must successfully complete pre-employment drug screen, physical and background check.May be required to provide basic hand tools to perform duties.Must be dependable.Willingness to train on first shift if required.Willingness to work any shift when needed.Flexibility to work additional hours when required.LANGUAGE SKILLSAbility to read and comprehend simple instructions, short correspondence and memos.Ability to write simple correspondence. MATHEMATICAL SKILLSAbility to add, subtract, multiply and divide whole numbers, common fractions and decimals in both US and metric systems and apply to practical situations.Knowledge and understanding of both US standard and metric measurements required. Plane geometry skills required.REASONING ABILITYAbility to apply understanding to carry out detailed but uninvolved written or oral instructions. Ability to effectively deal with problems which involve a few concrete variables in standardized situat
          Walton Arts Center 2017-18 season features Taj Mahal, David Sedaris, Bela Fleck   

The Walton Arts Center announced the programming for its 2017-18 season earlier this week. The WAC Broadway Series features productions of Rodgers & Hammerstein's “The King and I,” Oct. 3-8; Irving Berlin's “White Christmas,” Nov. 7-12; Gary Barlow and Eliot Kennedy’s “Finding Neverland,” Dec. 19-23; John Kander and Fred Ebbs’ “Cabaret,” Jan. 19 21; George and Ira Gershwin’s “An American in Paris,” Feb. 6-11; Jonathan Larson’s “Rent,” March 2-4; Douglas McGrath’s “Beautiful: The Carole King Musical,” April 24-29; and Rodgers & Hammerstein’s “The Sound of Music,” May 15-20.

The WAC’s 10x10 Arts Series features Ballet Arkansas’s “Emergence,” Oct. 13; contemporary dance ensemble Cas Public’s “Symphonie Dramatique,” Oct. 26; a cappella ensemble Voces8, Dec. 3; a concert from Béla Fleck and Brooklyn Rider, Jan. 17; The Triplets of Belleville Cine-Concert, Feb. 1; the Pasadena Roof Orchestra, Feb. 24; Aquila Theatre Co.’s production of “Sense and Sensibility,” March 8; the Dublin Guitar Quartet, March 9; “Flow,” a “yoga-inspired” piano concert from Ravé Mehta, May 24; and the Artosphere Festival Orchestra 10x10 Concert, June 19.

The comedy series, LOL @ WAC, includes performances from David Sedaris, Oct. 24, and Robert Earl Keen, Dec. 13. The American Music Series brings shows from the Taj Mahal and Keb’ Mo’ Band, Sept. 19; ukelele virtuoso Jake Shimabukuro, Oct. 18; country star LeAnn Rimes, Dec. 12; and the Charlie Daniels Band, May 10.

The Starlight Jazz Club Series features performances from The Huntertones, Oct. 14; trumpeter/vocalist Bria Skonberg, Nov. 10; the Latin Jazz All Stars, featuring Steve Turre and Nestor Torres, Dec. 8; Donny McCaslin, Feb. 10; vocalist Alicia Olatuja, March 2; and trombonist Conrad Herwig, April 28. For a full list of events or early access to tickets through the WAC’s subscription program, visit waltonartscenter.org.



          Pay Only $29 for The Coding Powerhouse eBook Bundle   

Software is running our life. If you’re unlocking your car with the push of a button, working on your laptop or using your smart phone, you should know that all these are using some kind of programming. Having tech skills in our rapidly digitizing world can be your ticket to better professional opportunities. Even if […]

The post Pay Only $29 for The Coding Powerhouse eBook Bundle appeared first on designrfix.com.


          The Earth is Flat: Implementing A Concatenative Language in Gazelle   
flat-in-gazelle-pt-01

The Earth is Flat

(Edit: I forgot to explain how to install and set up Gazelle. Please see my previous post to that effect.)
Hi everyone - work at my startup, Agri-Esprit, has been brisk lately but I've nevertheless made some progress on Gazelle. I am getting very close to porting Gazelle into itself, which will me a major milestone for the language. The layer which handles modules and macro-expansion is still a bit messy, but at this stage a complete rewrite in Gazelle itself is the better refactoring strategy. Plus, I don't want to accumulate any more macro-expansion code in the standard libraries, because that all needs a serious rewrite, as it is written in Emacs Lisp.
But, to whet your appetites and to exercise Gazelle a bit in preparation2, I thought I would write a multi-part series about building a tiny concatenative language using Gazelle. This language will be called flat, because concatenative code is at least superficially flat2.

The Semantics of Flat

Flat programs look like this:
3 3 +
Which results in 3.
[add-one 1 +] define-word
Which defines a word, which is the flat version of a function, which adds one to a value.
10 add-one message
Which calls that word.

10 my-words:times-3

looks up the word times-3 in the package my-words and calls it on 10.
flat, like most concatenative languages, operates with respect to a stack3 (two, actually) and the above programs can't be understood without reference to it. The first program pushes 3 onto the stack twice and then adds the result. The second program pushes a quotation onto the stack and then uses it to define a new word, and the third pushes 10 onto the stack and calls the word.
flat is a homoiconic language. Which is to say that a flat program is itself a piece of data that can be manipulated by stack and, given that flat lives in Javascript, via Gazelle, flat programs are also Javascript objects. But what sort of objects?

Representing Flat Programs

A flat program is a Javascript array. Furthermore, it is a Javascript array which contains any of the following:
literal numbers
that is, things denoted by 10, 13, 33.2 and so on
literal strings
that is, `test flight`, `pancakes`, "swords"
symbols
of which more later
keywords
ditto
and
flat programs
that is, things which satisfy this definition.
The two literal types, strings and numbers, and the flat programs themselves are rather transparently represented by the equivalent Javascript objects. Only symbols and keywords require elaboration.
symbols and keywords are roughly similar to the objects in Common Lisp which share their names4. That is, symbols will be used to denote things and keywords will be used to denote themselves. Further elaborating, symbols will eventually be resolved into words during interpretation of flat programs, while keywords will provide a convenient way to refer to a set of objects which have no role but to denote themselves.
How might we implement these objects using Gazelle?

Unambitiously

Gazelle provides some tiny wrappers over a pretty standard Javascript class system, so we could implement our symbols and keywords thusly:

(module
 (("hooves/hooves" :all)
  ("hooves/class-utils" :all))

 (define-class+ keyword Object
   (name)
   (this.set-name name)
   this)

 (define-method keyword set-name (name)
   (if (string? name)
       (set! this.name name)
     (throw (new Error "Keywords can only have names which are strings."))))

 (define-method keyword get-name ()
   (this.name))

 (define-class+ symbol Object
   (name :- (opt package undefined))
   (this.set-name name)
   (this.set-package package)
   this)

 (define-method symbol set-name (name)
   (if (string? name)
       (set! this.name name)
     (throw (new Error "Symbols can only have names which are strings."))))

 (define-method symbol set-package (name)
   (if (|| (string? name)
           (undefined? name))
       (set! this.package name)
     (throw (new Error "Symbols only have package names which are undefined or strings."))))

 (define-method symbol get-name ()
   (this.name))

 (define-method symbol get-package ()
   (this.package)))

More Ambitiously

However, this is somewhat underambitious, in my opinion. I'm interested in eventually letting people construct flat programs using a DOM based graphical user interface. As a consequence, I'm building the entire flat system on top of the Maria Model View Controller framework. I've used Maria for a lot of things lately, and so I've built a nice set of wrappers based on the underlying Javascript framework. The above class definitions look like this, using Gazelle's maria+ library:

(module
 (("hooves/hooves" :all)
  ("maria+/maria+" :all))

 (define-maria-model+ keyword-model
   maria.Model
   (external-properties name)
   (constructor (name)
                (this.set-name name)
                this))

 (define-maria-model+ symbol-model
   maria.Model
   (external-properties package name)
   (constructor (name :- (opt package undefined))
                (this.set-package package)
                (this.set-name name)
                this)))

You'll note this is much more succinct definition. The framework's define-maria-model macros automatically define getters and setters for properties which are listed in the external-properties sub-form of the class definition5.
One creates symbols and keywords in Gazelle/Javascript with new:

...
(var s1 (new symbol-model "some-name" "some-package"))
(var k1 (new keyword-model "some-keyword-name"))

So far, so easy. The entire reason we want to implement symbols and keywords is because Javascript has no convenient representation of identifiers that we can piggyback on while writing new languages. So it isn't really enough just to have models that denote symbols and keywords, we need to have a succinct way of indicating that we want to construct symbols. That is, we want to write somewhere something like:

a b c 10 11 +

and have it denote the Javascript/Gazelle object:

[:
 (new symbol-model "a")
 (new symbol-model "b")
 (new symbol-model "c")
 10
 11
 (new symbol-model "+")]

Denoting flat programs at Compile/Transcode Time

Easy things first. If we are satisfied with denoting all of our flat programs statically, then we can use the macro-expansion environment, that is Emacs Lisp, and its representation of symbols and keywords, and a macro, to translate something like (program a b +) into [: (new symbol-model "a") (new symbol-model "b") (new symbol-model "+")]
This is easy using a Gazelle macro:

 (define-macro+ program ((tail terms))
   (let ((-keyword `(from "flat/flat" keyword-model))
         (-symbol `(from "flat/flat" symbol-model)))
     (coerce
      (cons : (loop for term in terms collect
                    (match term
                           ((or (string item)
                                (number item))
                            item)
                           ((keyword k)
                            `(new ,-keyword ,(substring (symbol-name k) 1)))
                           ((symbol (funcall #'symbol-name name))
                            (let ((parts (split-string name ":")))
                              (match parts
                                     ((list package-name name)
                                      `(new ,-symbol ,name ,package-name))
                                     ((list name)
                                      `(new ,-symbol ,name)))))
                           ((p #'vectorp v)
                            `(program ,@(coerce v 'list))))))
      'vector)))

Here we define an external macro named locally program, which loops through its body, bound to terms by the pattern matching expression that constitutes macro arguments in Gazelle, and checks the type of each thing, expanding it to the proper Gazelle expression. Note here that we bind local versions of -keyword and -symbol because we want our macro to expand to the versions of these values which are bound in this package, not in the macro-expansion environment. The only slightly tricky aspect is that we have to choose a representation for the user to enter package qualified symbols, package:symbol, which expands to a new symbol-model with a name and package argument.
Note that it is possible in flat, apparently, to have symbols which are in no package and that these symbols are not keywords. They do have a special meaning, however, of which more later.

Denoting flat programs at Run Time

We'd like flat to be liberated from the Emacs Lisp/Gazelle environment. One good reason for this is that it could then be easily used by Javascript programmers who are not using Gazelle. Gazelle does aim to be a good citizen of the Javascript ecosystem, after all.
However, if we want to make using flat at run time, when the macro-expansion and Lisp reader are fond, but distant, memories, then we need to implement a flat reader. This is excellent practice for eventually implementing a Lisp reader, which must, after all, read symbols, numbers, and sub-expressions.

Parsing!

Javascript is a sad place for a Lisp to live, since it lacks a good, simple programmatic representation of source code and a reader to translate text to this representation. These two things are a major benefit of Lisp, but even Lisp's simple syntax isn't so easy to write a parser for. As we'll see, even flat, which is simpler than Lisp in a lot of ways, presents a modest task when it comes to parsing.
Luckily, I have a method of writing parsers which I feel makes them easy to denote, test and use: a parsing monad.
During the creation of flat, I also constructed a an implementation of monadic parsers and a variety of parser combinators called parseltonge, since it constitutes a domain specific language for parsers.
I want to go into the implementation of parseltongue because otherwise the parser for flat will seem like magic and because parseltongue constitutes a particularly nice example of why I programmed Gazelle. It enables access to abstractions which would otherwise be impossible in Javascript.

Parsers

At the heart of parseltongue is the notion of a parser. A parser is a just a function which accepts an input and produces either a Success, of which more later, which contains the result of the parser and the new input state (monadic parsers are purely functional), or a Failure, in which case a reason of some kind is enclosed6.

Success and Failure

Parsers either succeed or fail, and so we provide an abstract representation of this condition that we can easily construct and pattern match against. Success and Failure are represented by Javascript classes called Success* and Failure*. They have constructors that one can use without new called Success and Failure and custom pattern matchers called Success and Failure, so that pattern matching and construction of instance is symmetric.
Here is how we define this range of things:

 (define-class+ Success* Object (value)
   (set! this.value value)
   this)

 (define+ (Success val)
   (new Success* val))

 (define-class+ Failure* Object (reason)
   (set! this.reason reason)
   this)

 (define+ (Failure reason)
   (new Failure* reason))

 (define-pattern+ Success (value-pattern)
   `(instance (from "parseltongue/parseltongue" Success*)
              { value ,value-pattern}))

 (define-pattern+ Failure (reason-pattern)
   `(instance (from "parseltongue/parseltongue" Failure*)
              { reason ,reason-pattern}))

Now we can say something like:

(define (maybe-first-character string)
 (if (< string.length 1)
   (Failure "String too small.")
  (Success [string 0])))

(match (maybe-first-character "something")
  ((Success val) val)
  ((Failure reason) (throw (new Error reason))))

Of course in this case, it hardly affords us anything more that using throw, try, and catch. But I find this strategy is easier to understand when you want to handle unusual circumstances and/or combine and enhance error messages, or even resume a computation.

The parser state

To efficiently represent the state of a parser, we implement the following class:

(define-class+ Parse-State Object (string :- (opt cursor 0))
   (set! this.string string)
   (set! this.cursor cursor))

 (define-method Parse-State head ()
   [this.string this.cursor])

 (define-method Parse-State rest ()
   (if (< this.cursor this.string.length)
       (new Parse-State this.string (_+ this.cursor 1))
     this))

 (define-method Parse-State nth-rest-unsafe (n)
   (new Parse-State this.string (_+ this.cursor n)))

 (define-method Parse-State parsed ()
   (this.string.substring 0 this.cursor))

 (define-method Parse-State unparsed ()
   (this.string.substring this.cursor this.string.length))

 (define-method Parse-State length-left ()
   (_- this.string.length this.cursor))

 (define-method Parse-State take (n)
   (if (< n (this.length-left))
       (Success
        [: (this.string.substring this.cursor
            (_+ this.cursor n))
           (new Parse-State this.string (_+ this.cursor n))])
     (Failure (_+ "Cannot take "
               n " items from "
             (JSON.stringify
               { parsed (this.parsed)
                 unparsed  (this.unparsed)})))))

The main idea here is that we add a cursor to a string, and parsing advances the cursor rather than chopping the string up. This way our parsing doesn't involve the creation and chopping up of a lot of strings. Plus, this way our error messages can describe both the parsed and unparsed part of an input, which sometimes is more informative than just the latter.
So, each of our parsers will take such an object, do something with it, and return either a Failure with a reason or a Success, with a value and a new Parse-State.

Baby's First Parser

Here is a parser:

 (define+ (p-item input)
   (new Success
        [: (input.head) (input.rest)]))

It is handy to keep straight, in one's head, writing parseltongue code, whether a value is a parser or a parser-producer, that is, whether it is a function which is a parser or a function which takes some arguments, possibly parsers, and returns a parser. By convention, then, parsers are prefixed with p- and parser producers are prefixed, rather uncreatively, with pp-, which is a bit ugly but helps keep one's thinking straight.
We can use the above parser to write new parser that only parses the letter "a" in the following way:

 (define+ (p-a input)
  (match (p-item input)
    ((and success (Success [: "a" rest]))
     (comment "The pattern matching ensures that only `a` matches.")
     success)
    ((instance Failure* failure)
     (comment "Given that p-item doesn't appear to ever fail, this
  shouldn't really happen.")
     failure)))

(7)
Here we are using the pattern matcher to assert that we only match against a Successful parse of an item which, furthermore, must be the string "a". This is the great utility of pattern matching in Gazelle: extremely succinct and expressive denotations of program flow.
One can write parsers in this style, but one rapidly encounters bottlenecks that require lots of code to perform simple parsings. For instance, suppose we want to parse "[", then "a" or "b" then "]". To write such a parser by hand, in the style above, is cumbersome. We can write it in parseltongue quite simply:

 (define+ p-bracketed-a
  (parser
    (pp-str "["))
    (:bind character (pp-or (pp-str "a")
                            (pp-str "b")))
    (pp-str "]")
    (pp-return character))

(8)
But how does this work?

Magical Macros

If you haven't already guessed, it is quite difficult to expose the functionality above in pure Javascript because parser, which is a Gazelle macro, performs meta-programmatic transformations which are difficult to simulate using the usual tricks Javascript allows for meta-programming9.
However, underlying the macro magic is one function, called pp-bind, since it produces a parser, which accepts two arguments: a parser and a function which accepts a value of some kind and returns a new parser. pp-bind allows the programmer to create a new parser which expresses a chain between the value parsed by the first parser and the subsequent parsing behavior. Here is the implementation from parseltongue:

 (define+ (pp-bind mv mf)
   (lambda (input)
     (match (mv input)
      ((Success [: rval new-input])
       ((mf rval) new-input))
      ((Failure reason)
       (Failure
        (_+ "Parse failed with reason: " reason ", parse state: "
        (JSON.stringify { parsed (input.parsed)
            unparsed  (input.unparsed)})))))))

If you've thought about monads a lot, this is a fairly straightforward implementation of bind for parsers10. The function returns a closure over the values passed in, mv here is the parser, or the monadic value, and mf is the function which returns a new parser, or the monadic-function. The parser is applied to the input of the anonymous function, the value is extracted with a pattern match, and then that value is passed to mf, which results in a new parser, which is passed the input. Hence, mf can represent a block of code which constructs the next parser in a chain depending on the result of a previous parser.
This function is called pp-bind because it represents an extension of the programming-language level notion of binding. That is, mf, which is a function of a single argument, represents a value dependent on a variable which is unbound (denoted by the argument to the function), and pp-bind modifies the behavior of a standard function application by changing the process that relates expressions to bindings in such an expression.
The macro parser just makes chaining many pp-binds easier. Here is what it looks like:

 (define-macro+ parser ((tail body))
   (let ((pp-bind `(from "parseltongue/parseltongue" pp-bind))
         (pp-return `(from "parseltongue/parseltongue" pp-return))
         (pp-and `(from "parseltongue/parseltongue" pp-and)))
     (match body
            ((list* (list :bind pattern expr) body0 body)
             `(,pp-bind ,expr
                        (lambda (,pattern)
                          (parser ,body0 ,@body))))
            ((list* (list :let pattern expr) body0 body)
             `(_let ((,pattern ,expr))
                    `(,pp-bind ,body0 ,@body)))
            ((list (list* :aside aside-body) body0 body)
             `(progn ,@aside-body
                     (,pp-bind ,body0 ,@body)))
            ((list* expr body0 body)
             `(,pp-and ,expr
                      (parser ,body0 ,@body)))
            ((list expr)
             expr))))

The body of a parser consists of either
  • expressions which evaluate to parsers
  • :bind expressions, which bind a variables via pattern matching to the values produced by a parser
  • :let expressions, which bind values via patterns using regular binding semantics
or
  • :aside expressions, which just evaluate code but don't insert or bind things (useful for debugging)
:bind expressions just expand to calls to pp-bind which pass the expression on the rhs of the expression through pp-bind to a function which takes one argument and matches it, and then performs the rest of the pp-bind. As such, a parser expression always results in a parser.
When an expression which isn't a :bind, :let, or :aside is encountered, it is processed as though through :bind with a hidden variable. It produces no binding, but does pass through pp-bind.
Using parseltongue, it is pretty easy to write naive parsers for flat that we can call at run-time, in the Javascript only environment, to parse a string denoting a flat program in a Javascript representation that is easy to interpret:

The Flat Parser

parseltongue makes this pretty anti-climactic:

 (define+ p-unqualified-symbol
   (parser
    (:bind symbol-name (pp-rx "[-+0-9a-zA-Z-+=*/_~!@$%^&<>{}?]*[-+a-zA-Z-+=*/_~!@$%^&<>{}?]+[-+0-9a-zA-Z-+=*/_~!@$%^&<>{}?]*"))
    (pp-return (new symbol-model symbol-name))))
 (define+ p-qualified-symbol
   (parser
    (:bind symbol-package (pp-rx "[-+0-9a-zA-Z-+=*/_~!@$%^&<>{}?]+"))
    (pp-str ":")
    (:bind symbol-name (pp-rx "[-+0-9a-zA-Z-+=*/_~!@$%^&<>{}?]+"))
    (pp-return (new symbol-model symbol-name symbol-package))))
 (define+ p-keyword
   (parser
    (pp-str ":")
    (:bind keyword-name (pp-rx "[-+0-9a-zA-Z-+=*/_~!@$%^&<>{}?]+"))
    (pp-return (new keyword-model keyword-name))))

 (define+ p-symbol
   (pp-or p-qualified-symbol p-unqualified-symbol))

 (define+ p-program
   (lambda (input)
     (.. (parser
          p-whitespaces
          (:bind result
                 (pp-seq-of-whitespace-separated
                  (pp-or p-keyword p-symbol p-number p-doublequote-string p-singlequote-string
                         (parser
                          (pp-str "[")
                          (:bind program p-program)
                          (pp-str "]")
                          (pp-return program)))))
          p-whitespaces
          (pp-return result))
         (call this input))))

The only wrinkle here is that p-program is a recursive parser, so we wrap it into an explicit lambda expression so that the recursive reference to p-program is sure to be defined by the time we actually invoke the code. Note the use of handy parser producers from parseltongue. pp-rx parses anything which matches the regular expression passed in (string denotation only) that also appears at the beginning of the input. pp-str matchers only the indicated string. pp-seq-of-whitespace-separated takes a parser and produces a new parser which parses a sequence of the input parsers, separated by whitespaces. Using these terms, we easily construct a parser for flat, which is just a sequence of literals, symbols or keywords or programs in brackets separated by whitespaces.

Next Time

Next time I'll write the flat interpreter and introduce how I do really dumb unit tests in Gazelle. Until then, I hope this is meaningful to someone out there!


1. The actual origin of flat is I am working on a project where I want an easy to serialize representation of certain kinds of logic, for instance, whether a player is allowed to enter a room given the contents of her inventory.
2. flat is not actually flat because there is special syntax for denoting quotations (the flat equivalent of anonymous functions), for simplicity's sake, and because people find it odd to use a language with words named things like [ and ]. It turns out to be a matter of some esoteric interest and non-trivial complexity to produce a language that is truly flat, but such things, or at least elaborations on such things, exist. See, for instance, The XY Language, which implements a version of itself which is really flat.
3. See Om for a noteworthy counterexample.
4. I've never been entirely happy with the relationship between the things we call symbols in Common Lisp and the things we call Keywords. Indeed, keywords are symbols which reside in the keyword
package and which have the special property that they denote themselves. But this makes writing code over symbols and keywords somewhat cumbersome because one cannot method dispatch between the two things, even though they really do have different meanings.
5. maria+ has lots of fun features that allow you to specify the types of properties such that the setters check them for you. But this is for another blog post.
6. For the egg-heads, parsers return values in a Maybe-like monad.
7. Note that Gazelle supports multiline strings.
8. For those familiar with Haskell do syntax, :bind pattern expr above corresponds to = pattern <- expr = in Haskell.
9. namely using anonymous and higher-order-functions to control evaluation of blocks of code. I have some vague ideas about exposing the interface implied by parser in pure Javascript, but none are satisfactory. If any Javascript wizard out there has any suggestions, do tell.
10. For performance reasons and for simplicity, this parsing monad is deterministic. That is, it is just the state monad, untransformed by the multiple options monad transformer. See Drew Crampsie's SMUG or my kind of undermaintained Parseltongue (both for Common Lisp) for non-deterministic parsers. The primary reason I did not make Gazelle's parseltongue non-deterministic is because pp-or and pp-zero-or-more are very hard to get right in a non-deterministic context.

          A Simple Class System in Gazelle   
simple-class-system-gazelle

Today we'll implement/tour the simple class system that comes with Gazelle. This makes a good example to work with because it is simple but involves modules and macro programming, and it is, in fact, generally useful.

The implementation is in the hooves/class-utils module. If you want to follow along, setup your Gazelle implementation as described in a previous post. You can just look at the code that is in the repository at "scripts/hooves/class-utils.gazelle", or you can create your own version of the file and put it someplace else in the "scripts" hierarchy.

An Empty Module

We begin with an empty module:

(module
 (("hooves/hooves" :all))

)

Where we are importing all identifiers from the "hooves/hooves" module. Starting with the latest version of Gazelle, this module includes function definitions for all the javascript operators. It is somewhat expensive, in terms of compilation, to include a module, and you almost always want to use the operator functions and "hooves", which contains more basic utils, that I felt it was a good idea to just combine them.

Our class system is going to borrow liberally from that described by Kevin Lindsey here. The internet, as a collective organism, seems to think that Kevin's implementation is more or less the right one. So the first thing we can do is give credit where it is due, by adding the following to the empty module:

(module
 (("hooves/hooves" :all))

 (comment
  "A simple class system based on Kevin Lindsey's code:"
  "http://www.kevlindev.com/tutorials/javascript/inheritance/"))

The comment form will render its string values into Javascript comments, in case anyone looks at the js code directly.

Now, we could use Gazelle's include-js form to include Kevin's Javascript directly. We'd need to put it in a file next to the Gazelle code, and refer to it there, but let's port the implementation of the basic extend operation to Gazelle itself.

Extend

(module
 (("hooves/hooves" :all))

 (comment
  "A simple class system based on Kevin Lindsey's code:"
  "http://www.kevlindev.com/tutorials/javascript/inheritance/"))

 (define+ (extend sub-class base-class)
   (comment "extend sub-class base-class: "
            "Where both sub-class and base-class are constructors, extend"
            "contrives that sub-class will be a sub class of base-class, "
            "able to access its methods and values.")
   (var inheritance (lambda () undefined))
   (set! inheritance.prototype base-class.prototype)
   (set! sub-class.prototype (new inheritance))
   (set! sub-class.prototype.constructor sub-class)
   (set! sub-class.super-constructor base-class)
   (set! sub-class.super-class base-class.prototype))

Briefly, we are creating a stub-constructor in the variable inheritance, which we use create a clean prototype and constructor for instances of that class. We then ensure that the inheritance chain is set up appropriate for the stub. If you are interested in all the sordid details of why such an approach is needed in Javascript, read Kevin's tutorial. Javascript gives me a headache!

Recall that `define+` defines an external function to the module. We could basically stop here, since this basic solution gives you most of what you want. You can say things like:


(require
 (("hooves/hooves" :all)
  ("hooves/class-utils" :all)
  ("jquery/jquery" (:as $)))

 (console.log "Testing class system.")

 (define (Person first-name last-name)
   (set! this.first-name first-name)
   (set! this.last-name last-name))

 (define (Employee first-name last-name company)
   (Employee.super-constructor.call this first-name last-name)
   (set! this.company company))

 (extend Person Employee)

 (var emp (new Employee "Jane" "Doe" "IBM"))

 (console.log (+ "instanceof emp Person: ") (instanceof emp Person))
 (console.log (+ "instanceof emp Employee: ") (instanceof emp Employee)))

And you will indeed see that emp is an instance of both Person and Employee.

Riding the Gazelle

If this were Javascript, we'd pretty much be done. We could write a few functions to shuffle things around, but we'd basically be stuck with a few ugly things leftover. For instance, it sort of sucks that we have to invoke the super-constructor with call, and that we have to refer to the employee super-class directly, given that we are in the constructor for Employee and so it is implicit what super class we want.

Gazelle is lispy enough that we can "fix" this with a macro. What we'd like to do is give a single form which let's us evaluate the code describing the constructor of a new class in a context where some conveniences are available. The macro will need to introduce some bindings before the body of the new constructor is run.

Consider the following implementation:

 (define-macro+ define-class ((! (non-kw-symbol class-name)) 
                              super-class 
                              (tail constructor-lambda-forms))
   (let ((impl-name (gensym (symbol-name class-name)))
         (cons-args (gensym "cons-args"))
         (temp-args (gensym "temp-args"))
         (self-holder (gensym "self"))
         (super-class-val (gensym "super-class")))
     `(_newline-sequence
       (var ,impl-name (lambda ,@constructor-lambda-forms))
       (var ,super-class-val ,super-class)
       (define ,class-name 
        (lambda ((tail ,cons-args))
            (var ,self-holder this)
            (set! this.super-constructor
               (lambda ((tail ,temp-args))
                  (.. ,super-class-val (apply ,self-holder ,temp-args))))
            (set! this.super (.. ,super-class-val prototype))
            (.. ,impl-name (apply this ,cons-args))
            this))
       (.. (from "hooves/class-utils" extend) 
            (call null ,class-name ,super-class-val)))))

We define an external macro called define-class, which inserts a series of expressions separate by newlines into the compiled code. The first two are temporary variables which contain the implementation of the new class's constructor and the super-class, which might, after all, be an arbitrary expression in the macro expression. We want the value of that expression to use in the rest of the expansion. We then use define to create the new class constructor. The constructor is just a shim: it captures the arguments passed to it, creates a self binding, and adds a binding to a function to this, under super-constructor that just passes its arguments to the super class constructor, with the appropriate this.

We also give this.super a binding to the superclass prototype, so that methods can easily invoke superclass methods. The only wrinkle here is that we use (from "hooves/utils" ...) to invoke the function extend from this module.

For good measure, let's write one more macro that helps us conveniently define sub-class methods.

The idea is similar to that above: we want a form which allows the user to define a method, and in the body of that method, we want (super-method arg1 ... argN) to refer to the superclass method of the same name.

Consider:

 (define-macro+ define-method (class method-name (tail lambda-part))
   (let ((class-value (gensym "class-value"))
         (super-method (gensym "super-method"))
         (args (gensym "args"))
         (explicit-this (gensym "explicit-this")))
     `(_newline-sequence
       (var ,class-value ,class)
       (var ,super-method
            (if (&& 
                     (defined? (.. ,class-value super-class))
                    (defined? (.. ,class-value super-class ,method-name)))
                (lambda ((tail ,args))
                  (.. (.. ,class-value super-class ,method-name)
                      (apply this ,args)))
              (lambda ((tail ,args))
                (_throw (+ 
                  "No superclass method "
                 ',method-name
                 " in class " ,class-value)))))
       (set! (.. ,class-value prototype ,method-name)
             (lambda ((tail ,args))
               (var ,explicit-this this)
               (var super-method 
                      (lambda ((tail ,args))
                            (.. ,super-method (apply ,explicit-this ,args))))
               (..
                (lambda ,@lambda-part) (apply this ,args)))))))

This macro pre-calculates the super method so that we don't waste time doing that on each invokation. The implementation throws an error if no super method exists and one is called, but it might be more appropriate to look up the method at call time in that case. In any case, there is a bit of misdirection as we set up the environment where the lambda will execute, but the upshot is that super-method invokes the super method.

Testing

We will adapt the main.gazelle that Gazelle ships with, and use the example.html file to test this code:

(comment "main.gazelle")
(require
 (("hooves/hooves" :all)
  ("hooves/class-utils" :all)
  ("jquery/jquery" (:as $)))

 (console.log "Testing class system.")

 (define-class Person Object (first-name last-name)
   (set! this.first-name first-name)
   (set! this.last-name last-name)
   this)

 (define-method Person to-string
   ()
   (+ "Don't shoot, I'm "
      this.first-name " "
      this.last-name "!"))

 (define-class Employee Person (first-name last-name company)
   (this.super-constructor first-name last-name)
   (set! this.company company)
   this)

 (define-method Employee to-string
   ()
   (+ (super-method) 
    "  Plus, I work for " 
       this.company 
       "."))

 (define (newline)
   (.. ($ "body") 
        (append ($ "<br>"))))

 (.. ($ "body") 
       (append "Hello World."))
 (newline)
 (.. ($ "body") 
       (append (+ "" 
        (new Person "James" "Cooper"))))
 (newline)
 (var card 
   (new Employee "Orson" "Card" "IBM"))
 (.. ($ "body") 
      (append (+ "" card)))
 (newline)
 (.. ($ "body") 
      (append (+ "instanceof card Person is " 
              (instanceof card Person))))
 (newline)
 (.. ($ "body") 
      (append (+ "instanceof card Employee is " 
              (instanceof card Employee)))))

When you run this, you should see strings appear in the browser window indicating that our inheritance hierarchy is in place and that we can invoke super methods by using super-method.

That's all folks!


             
In my last blog post I demonstrated using Gazelle to write a quick Tampermonkey script. That example necessitated an aside about the nature of operators in Gazelle. I'd like to say a bit more about that in this post and introduce a small Gazelle featurette.

Second Class Citizens

Freedom for Operators!


Most languages do something which I consider quite odd: they take a set of operations and, rather than providing them to the user as functions, with all the associated first class benefits thereof, they furnish them as mere operators. In Javascript, these benighted second-class citizens count among themselves:
+ - / * ^ % < > <= >=
And others. These operators support infix syntax, the benefits of which I believe, in accord with Lispers everywhere, are overrated, but this post is not about infix expressions. It is about the peculiar and unnecessary distinction between operators and functions. That is, in Javascript, we are unable to say something as reasonable as:
reduce(+, [1,2,3,4])
Even though nothing about the nature of + dictates that this ought to be verboden. On the contrary, given an array and a + function, this is about the most reasonable thing you could want to do with them. Why this state of affairs persists in modern programming languages I will not presently speculate.

Operators in Gazelle

The unusual status of these functions in Javascript poses a problem for Gazelle, which tries to graft a Lisp-like language onto it. In all Lisps I know of, the operations listed above are exposed to the user as plain functions, so that one can write:
(reduce + (list 1 2 3 4))
For instance. Ultimately, I feel that in day to day programming its indispensable to have basic operations be functions. Parenscript, which is otherwise a great piece of software, lets you write:
(+ 1 2 3 4)
which lulls you into a false sense of security pertaining to the nature of +, but produce code which results in an error if you write:
(apply #'+ (list 1 2 3 4))
Because + is not a function. Gazelle takes a somewhat more conservative approach. Without loading any other code, there is no + operation and you cannot write even (+ 1 2).
What you can do is refer to the underlying Javascript operator using the notation Gazelle uses for Javascript primitives, eg: _+. One can write:
(_+ 1 2)
But cannot write (_+ 1 2 3 4). Why not? Because the idea of the primitive operations is to expose, as closely as possible, the behavior of the underlying Javascript. The Javascript + operator is a binary operator, and so the Gazelle _+ operator is also one.

Getting Operator Functions in Gazelle

Because of the way that Gazelle works, you can write operator functions pretty easily, but it is a bit confusing as to what is going on, so lets go through it. Suppose we want a function denoted by + in Gazelle, which is like a Lisp + function. Here is how we might write it:
(define (+)
     (_if (_=== 0 (.. arguments length))
          ((_throw "Plus requires at least one argument.")))
     (var total [arguments 0])
     (for ((var i 1) (_< i (.. arguments length)) (set! i (_+ i 1)))
          (set! total (_+ total [arguments i])))
     total)
Where this is almost pure Javascript. This renders into the following:

    var plus = function ()  {
      if ((0===(arguments.length)))    {
        throw ("Plus requires at least one argument.");
        };
      var total = arguments[0];
      for (var i = 1;(i<(arguments.length));i = (i+1))    {
        total = (total+(arguments[i]));
        };
      return (total);
      }

Note that at the level of Javascript, the function we just defined is called plus, not +. And note that all the references to _+ in the body have been transcoded to + in Javascript. If we refer to + in Gazelle, we refer to plus in Javascript, and if we refer to _+ in Gazelle, we refer to + in Javascript. Hence, we can go about our business using + in Gazelle and everything works.

A Systematic Solution

In 'idiomatic' Gazelle, which, since I am the world's only Gazelle programmer, means however I program, one is supposed to use modules, and one of the most important modules is the operator-functions module, which defines all the common operators as functions and/or macros. One writes:
(require (("hooves/operator-functions" :all))
  (+ 1 2 3))
To use all of the definitions in the module.
Sometimes, as in the Tampermonkey code, we cannot easily use the module system, because we want to write standalone scripts. In that case you can either get by with simply using the primitive operations or you can now say:
(gazelle:essentials)
at the top of the file, which is a "built-in" macro (defined in proper.el) that expands to definitions of all the common operators. This is a reasonable solution if you need to write a standalone script or otherwise don't like the module system. Feel free to implement your own solutions. That is what Lisp is all about.
          Using Gazelle to write a Simple Greasemonkey/Tampermonkey Script   

In this post I will demonstrate using Gazelle to write a Grease/Tampermonkey script to replace certain IP addresses in gmail's login history page with names, if the IP address is known to belong to a particular location.

I'm using Tampermonkey on Chrome, but I understand that the Greasemonkey script should be similar. Your mileage may vary.

Setting Up Gazelle

Gazelle is/aspires to be easy to set up.

You'll need GNU Emacs, which hosts the entire project.

You'll also need the Gazelle repository repository and shadchen-el.

you@home:~$ cd emacs-code # or wherever you put your emacs stuff
you@home:~/emacs-code$ git clone https://github.com/VincentToups/shadchen-el.git
you@home:~/emacs-code$ git clone  https://github.com/VincentToups/gazelle.git

Then, in your emacs configuration, either .emacs.d/init.el or .emacs add lines to the effect of:

(push "~/emacs-code/shadchen-el/" load-path)
(push "~/emacs-code/gazelle/" load-path)

If you want to use Gazelle you then must, at some point, (require 'gazelle).  It is very much worth byte-compiling all the Gazelle emacs lisp files, because they depend on a fair amount of macro magic and byte compiling should improve performance significantly.

What Do We Want to Do?

Gmail provides a handy feature that allows you to see what IP addresses are currently logged into your gmail account. It is the Details link at the very bottom right of one's inbox. It pops up a page that looks like this:



What we'd like to do is look at each of the td elements in the page, and if the element contains a description of an IP address we know, we want to replace the text of that element with a more descriptive name.  Here I have blacked out the IP addresses, but the lines are something to the effect of "* 000.00.00.000 (Geographic Location)".

This is a pretty simple task usinq something like jQuery, so the idea here is to show how it works in Gazelle.

Writing the Script

Create a file called name-ips-in-gmail.gazelle and put it someplace convenient. Tampermonkey scripts begin with a comment header that tells the system a few things about the script. Our script is going to use Jquery, and so the most notable line is the @require form. Comments are introduced in Gazelle via the comment form, which takes strings.

(comment "==UserScript=="
         "@name       Gazelle Example/IP Namer"
         "@namespace  http://use.i.E.your.homepage/"
         "@version    0.1"
         "@description  enter something useful"
         "@match      "
         "@require    https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"
         "@copyright  2012+, You"
         "==/UserScript==")

Now, it will be useful in this script to get the text of an html element but without the text of any sub-elements. The behavior of .text() in Jquery is the latter, rather than the former. So we define a function to do what we want:

(define (just-text element)
  (.. ($ element)
      (clone)
      (children)
      (remove)
      (end)
      (text)))

This function simply clones the element in question, removes all of its children, and then gets the text.
We will want to replace the contents of an element if it contains a particular IP address, so we need a predicate function to test for strings containing some substring.

(define (string-contains? s substring)
  (if (_> (.. s (index-of substring)) 0)
      true
    false))

In this case, we use the prim operation _> because we haven't included a function definition of >. If we want that we could write:

(define (> a b)
    (_> a b))

(See footnote 1)
When using Gazelle with modules, the hooves/operator-functions module contains function or macro definitions for the common operators (where appropriate). But here its not worth the trouble.
Now the meat of the script, a function which will be applied to each td element on the page, and which will test to see whether it should be replaced with a known location.

(define (each-fun index element)
  (var text (just-text element))
  (if (string-contains? text "000.00.000.000")
      (.. ($ element) (text "Location 1")))
  (if (string-contains? text "00.000.00.000")
      (.. ($ element) (text "Location 2")))
  (if (string-contains? text "00.00.000.000")
      (.. ($ element) (text "Location 3"))))

Obviously you will need to replace the IPs above with meaningful ones. You could also make an easier to extend implementation.

And finally we perform the action:

(.. 
 ($ "td") (each 
           each-fun))

Once we have all this in a file, we can say:

M-x gz:transcode-file

And we get this result in name-ips-in-gmail.js:
// ==UserScript==
// @name       Gazelle Example/IP Namer
// @namespace  http://use.i.E.your.homepage/
// @version    0.1
// @description  enter something useful
// @match      
// @require    https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// @copyright  2012+, You
// ==/UserScript==
;
var justText = function (element)  {
  return ($(element).clone().children().remove().end().text());
  };
var stringContainsPredicate = function (s, substring)  {
  return (((((s.indexOf(substring))>0))?(true) : (false)));
  };
var eachFun = function (index, element)  {
  var text = justText(element);
  ((stringContainsPredicate(text,
"***.**.***.***"))?($(element).text("Location 1")) : (undefined));
  ((stringContainsPredicate(text,
"**.***.**.***"))?($(element).text("Location 2")) : (undefined));
  return (((stringContainsPredicate(text,
"**.**.***.***"))?($(element).text("Location 3")) : (undefined)));
  };
$("td").each(eachFun);

Now simply create a new User Script in Grease or Tampermonkey and copy the .js file into it and you should be done. Congratulations, you've written your first bits of Gazelle code!

Footnote 1:

Since Gazelle is brand new, it bears discussing exactly what something like this:


(define (> a b)
    (_> a b))


really means.  This form introduces a function called `>` which, in its body, references the Javascript operator of the same name by using the symbol `_>`.   This is expanded to Javascript code like:

var greaterThan = function(a,b){ return a>b }

In Gazelle we can refer to the function `greaterThan` with the symbol `>`.  We could also restrict ourselves to uses of the operator `_>`, but the function is probably preferred, because we can map, reduce, filter, or apply with it.  Frankly, I'll never understand why modern programming languages keep to the idea that one should have these second class citizen "operators" floating around.
          On Lisps   
My recent release of Gazelle, a Javascript Lisp dialect, has, unsurprisingly, produced some commentary about my choice to implement the system in Emacs Lisp. Coincidentally, this also comes on the tail of a long (and mostly civil, I might add) discussion I had in the Lisp sub-reddit about the merits of including in our rhetorical ecosystem discussion about unusual Lisp dialects like Newlisp and Picolisp, in which I argued that its useful to discuss and even program in these dialects. Many people express strong opinions to the contrary, and while some of the objections relate to aspects of Newlisp's implementation, like One Reference Only Memory Management, to which, as a dabbler in language implementation, I cannot speak, a lot of the distaste for these dialects, and for Emacs Lisp, seems to relate to their use of dynamic scope.

Now, in general, I like my Lisps static. A lot of what I fiddle with in Lisp has to do with emulating features I like in Haskell (poorly), and Haskell hews pretty close to orthodoxy on the scope issue. My favorite Lisp is probably Racket, and the only support it provides for dynamic-like bindings is through parameters. In short, I am no fan of dynamic binding, and was delighted as anyone when Emacs Lisp began to support lexical binding natively, and would be happy to program without it in any language.

However, I do not view dynamic scope as the kiss of death like many people seem to, especially when programming in Lisp dialects. Of which more later. I'd like to make the case that perhaps, just maybe, we should think of default dynamic scope in a Lisp as a wart, rather than language nullifying feature.

Why do I feel this way?

 Well, it has something to do with Concatenative Languages.

What?

Consider the following diagram:
------------------------------------------------------
dynamicish                                   lexicish
+--------+  +--------+      +-----------+   +--------+
|factor  |  |picolisp|      |common lisp|   |haskell |
|        |  |        |      |           |   |        |
+--------+  +--------+      +-----------+   +--------+
 +--------+    +---------+        +-------+
 |joy     |    |newlisp  |        |scheme |
 |        |    |         |        |       |
 +--------+    +---------+        +-------+
Where the left hand side of each box indicates the position of the language inside on a sloppily conceived of axis going from "dynamicish" to "lexicish", ideas which we will try to pin down as we go. (If, by the way, any actual computer scientists are reading this, I apologize in advance for the conceptual butchery I am no doubt in the process of committing.)

One thing this diagram reflects is the intuitive degree to which we can depend on the nature of binding in the language - Picolisp and Newlisp here obviously favor dynamic binding, Common Lisp supports both well, Scheme favors lexical bindings somewhat more than Common Lisp, and a language like Haskell is pretty much straight lexical binding. (Exceptions abound of course, given the power of these languages to add features.)

What is interesting is that if we change the above diagram by relabling the axes:
------------------------------------------------------
code is simple data            code is not simple data
+--------+  +--------+      +-----------+   +--------+
|factor  |  |picolisp|      |common lisp|   |haskell |
|        |  |        |      |           |   |        |
+--------+  +--------+      +-----------+   +--------+
 +--------+    +---------+        +-------+
 |joy     |    |newlisp  |        |scheme |
 |        |    |         |        |       |
 +--------+    +---------+        +-------+

We don't really need to move the boxes around very much. This is particularly true if we make ourselves clearer and say that code is data when the "official" result of evaluating a piece of "code data" that represents a piece of code is encodable in that data in a simple form. Examples will clarify that horrible monster of a sentence, hopefully.

Concatenative Languages and Quotations

Put aside for the moment the oddness of concatenative languages, and questions which may be appearing in your mind about why anyone would want to program in one. The point here isn't to convince you of their merits. The point is that concatenative languages (except Forth), as it lacks quotations) provide an example of languages where "code is data" is particularly true, and where that data is particularly simple while still retaining a consistent meaning.
Concatenative languages are based on the composition of functions which map one stack onto another stack (usually). Because all functions in such languages have the same interface, one writes a concatenative program as a list of functions, as in this piece of Factor code:

1 1 +

Which evaluates to "2" and is read from left to right as "take the stack and return it with 1 pushed onto it", do that again, and then "take the stack, return a new stack with the result of the first two items removed and added together". Note the utter absence of variable bindings (functions do have names, of course). This (arguably punishing) simplicity makes evaluation unusually simple: begin at the left with an empty stack, and call each "word" on the stack until you run out of functions. We can represent a program as a flat list of lexemes, each of which denotes a function. So the representation of code can be a list and its meaning is simple.

Here is what is interesting about these languages to me: they lack a notion of variable binding, and so you might think they they lack anonymous functions, which they do, strictly speaking. However, because code is easily represented as a list, lists serve the same role as anonymous functions and in languages like Factor, these fragments of code (called quotations because they are introduced via something like quote in Lisps) are constantly exploited to perform the equivalent of "functional programming" idioms in Factor. For instance, to add one to each number in a list of numbers, one writes in Factor:

{ 1 2 3 } [ 1 + ] map

Or, less succinctly, but more evocatively:

{ 1 2 3 } 1 [ + ] curry map

Where I have just shown that one can curry, really, partially apply, and compose (not illustrated) quotations.

The question one must ask is what do we really need for functional programming? We must be able to apply functions, compose them, and partially apply them. Many, but not all, uses of lexical scope in more lexical languages reduce transparently to these operations. We might write in Scheme:

(map (curry + 1) (list 1 2 3))

For instance, with (a simple) curry being implemented as:

(define (curry f a)
  (lambda (b) (f a b)))

Where we are exploiting the lexical scope introduced by curry to stick two values into the lambda.
In a dynamic Lisp, we might say instead, as I often say in Emacs Lisp when I don't want to engage the machinery of the old lexical-let implementation in cl.el:

(defun curry (f a)
 `(lambda (b) (funcall #',f ,a)))

Code is Sort of Data

Factor uses a special data type called a quotation for its, um, quotations, but this has more to do with type safety and compiltion than with the semantics of what a quotation is. It is still basically a list, so let us imagine that the implementation of the curry word is:

: curry ( item quotation -- quotations ) cons ;

That is, effectively, curry is cons. It adds an element to the front of a list.
Now, the dynamic, Emacs Lisp version

(defun curry (f a)
 `(lambda (b) (funcall #',f ,a))) ; thanks to coroi on reddit 
for pointing out an error 
                                  ; here. 

Has something in common with the Factor version. They both operate on and return a simple representation of code, a list. The extra complexity of Emacs Lisp lies in its evaluator. For instance:

(funcall (curry #'+ 1) 1)

is evaluated in the following way: the call to curry is evaluated, returning a list. 1 evaluates to 1, of course, and then funcall does the following. The evaluator can see that the first argument is a lambda because its head is lambda. That means that it extends the dynamic environment with a binding of 1 to b, and then recursively evaluates the body. That means the evaluator is carrying around an environment which it needs to resolve the meaning of code. Still, its pretty simple: just (conceptually) a list of stacks for each possible variable binding with the latest binding on the tops.

The Scheme code, in contrast:

(define (curry f a)
 (lambda (b) (f a b)))

Doesn't deal with any simple data structure. f is a procedure, and its representation is complex, hidden and has a lot to do with compiling the Scheme code, probably. The return value, as the result of a lambda expression, is also a procedure, and similarly inscrutible. The compiler probably does some efficient fiddling to encode in the lambda itself where the references f and a point to: in all likelihood, the compiled code removes the mention of specific symbols entirely. Even though the lambda represents a piece of code in some sense, as it is executable, its representation is now quite complicated. We can still say "Code is data" of Scheme lambda expressions, but it is not very transparent or interesting data.

What about Quotations?

In Factor, quotations and lambdas are the same thing, because there are no symbols to bind in any scopes. Higher order functions and macros are basically the same!
In Emacs Lisp quotations are pretty close to lambdas too: if they happen to have as their head a lambda, then they are, subject to some constraints, actually lambda expressions. If not, you can still call eval on them and if all of their free symbols are located in the dynamic environment that you call eval from, then you get a "meaningful" result. In picolisp, where this philosophy is entirely embraced, one can write higher order functions that do the same thing as macros because they can inspect code passed in.

In Scheme, a quotation introduces syntax, primarily because you want to use quotation during macro construction and hygienic macros need to know more than just the list-structure of the code they work on to ensure hygiene. So already the representation of code in just a quotation is more complicated. This is the primary reason that Scheme is "more staticy/lexical" than Common Lisp, in which a quotation really does produce just a regular list. Scheme wants to ensure macro hygeine, and for that reason static or lexical concerns must even enter into your primary code represantation. In Common Lisp there is a macro system which is distinct from the function system, but allows you to use regular list operations to build the generated code. In Scheme the macro system is somewhat more cumbersome conceptually, with special operations on "syntax" objects to enforce lexical hygeine. Complexity has crawled deep into the language.

Finally, in a language like Haskell, you don't really have quotations at all. The representation of any kind of code has become fairly complex and generally not worth fiddling with (template metahaskell aside).

What does this mean?

The point of the above discussion is twofold:
  1. Languages lie on a continuum between dynamic and static and that positions on that continuum have complexity and flexibility payoffs and penalties. The very dynamic languages pick up a lot of flexibility (which is good and bad) and the static languages pick up a lot of complexity, but get certain conceptual guarantees and speed in exchange.
  2. Especially in Lisps, which provide facilities for meta-programming, this distinction isn't extremely important. Heck, even Factor has an implementation of lambda with lexically scoped variables that compiles down to stack code. Emacs Lisp has a lexical-let form that gets you 99% of what you want. Specific features of closures that you need at any given moment can easily be built in dynamic lisps. If you want to program functionally, for instance, you can whip up good curry and compose operations in any of these languages and away you go.
I can't find the reference at the moment, but I recall reading from one of the Factor maintainer's that they use lexical variables in less than ten percent of the Factor code base. I suspect if you examine any large Lisp project you will find that for the most part the actual use of the semantics of lexical scope is small.
There is absolutely an argument to be made that dynamic scope introduces certain kinds of hard to find bugs, and I agree with that assessment. I don't think dynamic scope is optimal by any means, but the case against it is somewhat overstated. A dynamically scoped Lisp is still extremely powerful and in some ways more flexible than an efficiently compiled lexical lisp.

Actual Code

I work hard on making my Emacs Lisp code readable and clear, and so I wanted to show a bit of the implementation of Gazelle here, to drive the point home that in a Lisp the exact feature set under the hood doesn't make as big of a difference as it might seem.

(defun-match- prim:transcode ('_false)
  (prim:insert "false"))

(defun-match prim:transcode ('_true)
  (prim:insert "true"))

(defun-match prim:transcode ('_null)
  (prim:insert "null"))

(defun-match prim:transcode ('_undefined)
  (prim:insert "undefined"))

(defun-match prim:transcode ((non-kw-symbol s))
  (prim:insert (prim:mangle s)))

(defun-match prim:transcode ((keyword k))
  (prim:insert "\"")
  (prim:insert (prim:mangle (prim:kw->symbol k)))
  (prim:insert "\""))

(defun-match prim:transcode ((number n))
  (prim:insertf "%s" n))

(defun prim:transcode-string (string)
  (prim:insert "\"")
  (loop for character in (coerce string 'list) do
        (match character
               (?\n (insert "\\n"))
               (?\t (insert "\\t"))
               (?\" (insert "\\\""))
               (?\\ (insert "\\"))
               (else (insert else))))
  (prim:insert "\""))

(defun-match prim:transcode ((string s))
  (prim:transcode-string  s))

(defun-match prim:transcode ((list '_var (non-kw-symbol s) expr))
  (prim:insert "var ")
  (prim:transcode s)
  (prim:insert " = ")
  (prim:transcode expr))

(defun-match prim:transcode 
       ((list '_return 
              (list (and which 
                    (or '_for '_while '_try '_var '_=)) (tail body))))
  (recur `(,which ,@body)))

(defun-match prim:transcode 
       ((list '_return 
              (list 
               (and which (or '_throw '_continue '_break)) expression)))
  (recur `(,which ,expression)))

(defun-match prim:transcode ((list '_return expression))
  (prim:insert "return ")
  (prim:in-parens 
   (prim:transcode expression)))

This is a small excerpt from the prim module, which converts a primitive representation of Javascript in s-expressions to Javascript source code. That transcoder consists of one large function definition, split up into several invocations of defun-match (the initial defun-match- clears previous function bindings to the provided function name), each of which matches its pattern against the input and executes when the match succeeds. Matches are tried in the order in which the defun-match forms are compiled, in most cases from top to bottom. defun-match allows you to tail-recur to the same function without growing the stack, so in many cases (two shown above), prim:transcode calls itself to perform the actual transcoding.

I can only ultimately speak for myself, but I find that this code is clear, readable (once you get used to the pattern matching) and self documenting. If you can write code like this in Emacs Lisp, is it really such a crime to do so?

And given that by really thinking about the different ways to program in different Lisp and Lisp-like languages we can learn a great deal about programming, even in our favorite dialects, is it really useful to stifle conversation and development in alternative Lisps?
I really don't think so.
          More Updates to Shadchen   

Since I created Shadchen, I've been lucky enough that the following, sometimes related, things have happened:

  1. I got a job programming in Common Lisp full time.
  2. I got married.
  3. I am/will be moving to France.

Understandably, this has resulted in a significant decrease in the frequency with which I have written things for this blog. Sorry - if anyone was itching for updates.

Shadchen News

Shadchen is a pattern matching library which I've been developing simultaneously in Emacs and Common Lisp - an interesting experience. Shadchen has been a big hit at my new company, and you might imagine that this would mean that the Common Lisp version of the library would be developing rapidly while the Emacs Lisp version would struggle to catch up. This turns out not to be the case for business process reasons: developing shadchen.lisp is now "work" and so must compete with other work related responsibilities, whereas shadchen.el primarily subserves my personal projects, many of which still live in Emacs Lisp.

So, defun-match

As a consequence, it has long been possible to write:

(defun-match- product ((list (tail tl)))
 (recur tl 1))
(defun-match product ((list) acc)
 acc)
(defun-match product ((list (must-match (number hd)) (tail tl)) acc)
 (recur tl (* acc hd)))

Using shadchen.el, to define a dynamically type checked tail recursive product function. In fact, this system has been torn down and rebuilt at least once in shadchen.el but never appeared in Common Lisp's version of the library1.

I've finally gotten around to implementing some of these new features in shadchen.lisp. Because most (all?) Common Lisp implementations support tail call optimization in some form, and because supporting recur in Emacs Lisp Shadchen is a considerably complex problem, shadchen.lisp depends on the implementation's recursion, so the above would be written:

(defun-match- product ((list (tail tl)))
 (product tl 1))
(defun-match ((list) acc)
 acc)
(defun-match product 
  ((list (must-match (number hd)) (tail tl))
    acc)
 (product tl (* acc hd)))

New Patterns

In both Emacs Lisp and Common Lisp, one may write a must-match pattern, as either

(must-match ...)

or

(! ...)

Which, when encountered in the course of regular matching produces an error if it fails to match. Generally, this is only useful when you want to ensure that when one particular match succeeds and another fails, that you find out about it immediately. In the above product function, if you pass a list like (1 2 a 3 4) you will get an error to the effect of

"must-match pattern ((number hd)) failed against: a"

Without must-match, the error would be the less informative match failed for product: (list a 3 4) 2 (or something like it).

Sometimes you want an even nicer error message, in which case you can write:

(! (number x) error-value 
   (format nil "product only works on lists of
    numbers, but encountered ~S" error-value))

In this form, if the pattern fails, the failed value is bound to error-value and then the final form is evaluated to produce a value to pass to error, in a lexical context with error-value. You can use any shadchen pattern for error-value but since its an error condition, you usually don't know what to expect.

One can also match against the tail of a list using the list pattern like so:

(list a b c (tail some-tail-pattern))

This is identical to the syntax

(list-rest a b c some-tail-pattern)

Since defun-match argument lists are syntactically identical to a list match, you can use tail to match against the tail the arguments passed in.

Vectors

In the Emacs Lisp version of the library only, you can match against vectors using Emacs Lisp's vector syntax, eg:

(match [1 2 3]
  ([a b c] (list a b c)))

Evaluates to (1 2 3). One can use the tail pattern in a vector to capture the end of a vector, but in that case the tail value will be coerced to a list.

Common Lisp users must match using vector.

Notes

Perhaps not intuitively, I think of shadchen.el as significantly better stress tested than shadchen.lisp. This has to do with the fact that I've used the Emacs Lisp version to implement several large projects (including this Lisp to Matlab transcoder) and that Emacs Lisp has simpler semantics. In particular, Common Lisp shadchen has some problems with multiple-values, which I am working on resolving.

On the other hand, its much better to have pattern matching than not to have it.

  • The Emacs Lisp shadchen is available here.
  • The Common Lisp shadchen is available here.

1 Another issue is that CLOS and defun-match are not really orthogonal language features, and so it was less necessary and useful to have defun-match in Common Lisp.


          Parenlab: S-expressions on top of Matlab/Octave   

I am two people - one of them is a numerical scientist who spends most of his time writing code in Matlab to do data analysis. The other is a freelance Lisp programmer, where I do regular software engineering. I've long been a Lisp enthusiast, and I do a fair amount of Lisp programming in Emacs Lisp as part of my scientific work, since Emacs is my Matlab IDE, but I didn't start really programming in Lisp for "real things" until recently. As the number of hours dedicated to Lisp increased in my life, I began to really miss the features in Lisp that I didn't have in Matlab; in particular s-expression motion and editing and metaprogramming.

I can't abandon Matlab, however. Matlab's support for numerical programming is exceptional, true, but the real value is that its plotting system is rich, well integrated and customizable. Plus, I have 7+ years of Matlab utilities which it would take significant time to reproduce in another numerical analysis language, even if it was feature complete otherwise.

So I brought the mountain to Muhammad.

Parenlab

Parenlab is a Lisp which compiles to Matlab by way of Emacs Lisp. What this means is that the syntax is Emacs Lisp and the Semantics is Matlab. Metaprogramming is possible via macros which transform the elisp representation of Matlab code before the code is translated to Matlab. Because I use Emacs as my Matlab IDE, this is a reasonable solution - just use the Emacs Lisp interpreter as the macro language. One day, Parenlab may be self-hosting.

Examples:

The parenlab code:

(let* ((x (range 0 (* 2 pi) 100))
       (y (sin x)))
 (plot x y :color "g"))

Is converted to:

funcall(...
    @(x)funcall(@(y)plot(x, y, 'color', 'g'), sin(x)),...
     range(0, mtimes(2, pi), 100))

Or:

(defun (a b c) some-function (a b c)
   "Documentation."
   (setq a (++ a b c))
   (setq b (++ a b c))
   (setq c (++ a b c)))

Is converted to a file, called someFunction.m which contains:

function [a,b,c] = someFunction(a,b,c)
%Documentation.
'Documentation.';
a = plusplus(a, b, c);
b = plusplus(a, b, c);
c = plusplus(a, b, c);

defuns can be sprinkled throughout your script files - they will be transcoded as they are encountered and produce no output in the currently building function. One can also say:

(script some-script-name 
 <parenlab-code>)

Which indicates the code beneath should be transcoded to a script file rather than "in place."

Parenlab is still a work in progress, but it is rapidly approaching the point where any functionality you wish can be expressed in Parenlab.

Notes on Usage

Mangling

Parenlab, like Parenscript, tries to make life easy by letting you write lisp-style identifiers. In doing so, it mangles names during translation. Eg, a parenlab symbol:

some-function

Will be rendered as:

someFunction

eg, dashes followed by letters are converted to camel case. Other "special" characters are transcoded according to the following table:

("+" "plus")
("-" "minus")
("*" "mtimes")
("<" "lessThan")
(">" "greaterThan")
("$" "cash")
("=" "equal")
("!" "bang")
("?" "who")
(":" ":")
("/" "divide")
("\\" "mdivide")
("#" "hash")
("@" "at"))

These choices are made to improve transcoding, so that many operators don't need special cases. Eg (* 10 10) translates to mtimes(10,10) - conveniently using Matlab's built in mtimes function, which is equivalent to Matlab's * operator.

One wrinkle is that : is reserved to preserve simple matrix construction expressions. For instance,

x:some-variable:y

transcodes to

x:someVariable:y

This syntax is limited by how the lisp reader reads symbols. For complex generation expressions, use the (: ) macro. Eg:

(: start step stop)

Keywords, that is symbols starting with :, are transcoded to mangled strings, so that :a-keyword becomes 'aKeyword'.

Since many matlab functions use strings as keyword arguments, this lets you use keywords for them instead.

nil transcodes to []. There are no true and false values in Matlab.

Scope and Variables

Scope in Matlab is funny - only limited lambdas are allowed in scripts and functions, although nested functions with full definitions and full lexical scope behavior are allowed within functions (though not anonymously).

Sort of like in Python, lambdas are restricted to single-expression-only bodies. While they do form closures over their lexical environment, those closures are static, that is, they do not permit side effects of any kind.

That is,

(setq y 10)
(setq f 
 (lambda (x) 
   (setq y x)))

Will compile fine in Parenlab, but produce an error, because the inner setq is not an expression, but a statement, which isn't allowed. Parenlab does provide a progn form, so you might try:

(setq y 10)
(setq f 
 (lambda (x) 
   (progn (setq y 10)
          nil)))

This will generate Matlab code which uses eval to produce code which expresses this intent, but you'll still get an error, saying that the lambda tries to modify its static environment, which is not allowed. let and let* are implemented using lambda, so they create static lexical environments. It is conceivable that major cross compilation tricks could be used to simulate dynamic scopes, but I'd prefer to keep things simple.

You shouldn't be using side effects anyway.

The rule of thumb is write Matlab code with s-expressions, not Lisp code that calls Matlab functions. Parenlab tries to bridge the gap but in some ways Matlab is too limited.

If Statements

If in Matlab is "flat", in that each branch is a series of statements or expressions and the if statement itself doesn't return a value. Parenlab if statements are not flat - they return the value of whatever branch is evaluated.

This rule is sometimes inconveneint for the Matlab idiom, so it can be disabled if the branches are blocks. A statement of the form:

(if condition 
  (block 
    <some-code>)
  (block 
    <some-other-code>))

Transcodes to:

 if condition 
    some code
 else
    some other code
 end

Ordinarily, if expands to

fif(@()condition, @()true-code, @()false-code)

Here we use the trick of using lambda to delay evaluation. This if expansion cannot perform side effects, unfortunately. Use (block) legs if you want regular matlab semantics. Both legs must be blocks.

Cell Arrays

Indexing is identical function calls, syntactically, so the index expression:

x(1:10)

Is written as

(x 1:10)

In parenlab. Matlab also has cell array indexing, which looks like this:

x{1:10}

Which is expressed like this in Parenlab:

({} x 1:10)

These are macros, not functions, and so the use of end as an identifier inside them is fine, eg:

({} x 1:end)

Will convert to:

x{1:end}

Structs

Structure access can be written as symbol.name since the parenlab mangler leaves dots in symbol names. Programmatic access, where a string is used, is written with ->, eg:

(-> s :field)

Which is equivalent to s.('field'). -> supports nested access, so you can say;

(-> s :f1 :f2 :f3)

Which is like this: s.('f1').('f2').('f3') which may not actually be valid Matlab syntax. Parenlab implements this as a function call.

Macros

In elisp, parenlab macros can be defined with pl:def-pl-macro. During transcoding, the form defmacro causes a new parenlab macro to be defined and generates no output. Parenlab macros have the same semantics as regular Macros. You get syntax passed to the macro as arguments, you transform it into valid parenlab, and you return the result.

For instance, a macro which introduces a lexical variable binding called with, like this:

(with x 10 (* 2 x)) ;-> 20

Is implemented like this:

(pl:def-pl-macro with (symbol value expression)
 `(funcall (lambda (,symbol) ,expression) ,value))

Or, inside some Parenlab code:

(defmacro with (symbol value expression)
 `(funcall (lambda (,symbol) ,expression) ,value))

Other Notes

Right now you use parenlab by invoking pl:transcode on an s-expression. This will transcode in the current buffer. pl:transcode-to-string will transcode to a string instead.

Parenlab requires matlab-mode so that it can indent its outputted code correctly.

I have a highly idiosyncratic Matlab setup, so I put some integration code in auxilliary.el. If you have a Matlab process running in a buffer called *evalshell*, then this code will let you load a parenlab file and press C-c C-c to "compile" and execute the code therein. This process will write any script and defun forms to files before executing the code. C-x C-e will evaluate the last s-expression as Matlab code in the interpreter.

Parenlab depends on Shadchen-el my pattern matching library.


          Shadchen-el introduction and defpattern tutorial   

Lately I've been working on an Emacs Lisp library I'm pretty proud of, Shadchen. It implements extensible pattern matching, somewhat like Racket's Match facility for Emacs Lisp. In this tutorial/introduction I'll explain how to use Shadchen's various facilities and, most importantly, how to extend Shadchen itself with new patterns, which is an interesting subject in and of itself, combining compile time and run-time execution in interesting ways. If you already know about pattern matching, feel free to jump to the end, where I talk about writing non-trivial patterns using Shadchen's defpattern.

The Problem Shadchen Solves

Shadchen solves several problems you may not know you may have. In one sentence, Shadchen lets you concisely express both destructuring and type checking for complex data structures. It can be thought of as combining the features of cond, case and assert into one nice package. My experience is that this collection of features helps me write better code, since it encourages me to dilineate exactly the kind of data a function or form expects before doing anything with it.

Shadchen is also conservative - unless you provide a pattern that matches the input data, it will fail with a match error, so you know something is wrong before something strange happens.

For instance, suppose we were writing an interpreter for Lisp. It might look like:

(defun eval (form env)
 (cond form 
  ((symbolp form) (eval-symbol form env))
  ((listp form)
   (case (car form)
    (if (handle-if (cadr form)
                   (caddr form)
                   (caddr form) env)) 
    (let (handle-let 
          (cadr form)
          (cdddr form)))
    ...))))

Note that we have both a cond and a case here, and that after we test our data, we destructure it. Here is a similar piece of code using Shadchen:

(defun eval (form env)
 (match form 
  ((p #'symbolp s) (eval-symbol s env))
  ((list) nil)
  ((list 'if pred true-branch false-branch)
   (handle-if pred true-branch false-branch env))
  ((list-rest 'let (list-rest pairs) body)
   (handle-let pairs body env))
  ...))

(Notes: the pattern p passes when the predicate as its second argument is true on the match value, and then matches against the third argument. So (p #'symbolp s) matches only when form is a symbol and then binds s to that symbol. list matches when the input is a list and each pattern in the the list pattern matches each corresponding element in the list. list-rest is similar but any leftover parts of the list are matched against the final pattern.)

This code is more concise, and yet it is also much more explicit, both in that it provides better naming for values and it provides more explicit error checking. For instance, this version will only match if with three expressions, where as the previous evaluator would have been fine with the expression (if a b c d e f). This version also asserts explicitly that the binding part of the let needs to be a list. With a custom pattern we could also ensure it was a list of symbol/expression pairs in almost the same space.

It takes all kinds, but I found that once I got used to programming with pattern matching, it was hard to go back.

Other Rad Features of Shadchen

match-let

Shadchen wants to let you program in a functional style. To that end, in addition to the regular pattern matching form match, it also provides some other, nice features. Many algorithms involve examining some intermediate data, checking its structure somehow, and then recursively processing the next step. Shadchen allows this kind of thing with the Scheme-flavored match-let form.

The form match-let can be used exactly like let:

(match-let 
  ((x 10)
   (y 11))
 (+ x y))

But in each "binding" pair, the symbol may be replaced with any Shadchen pattern. Eg:

(match-let 
 ((x 10)
  (y 11)
  ((list q r s) (list 1 2 3)))
 (+ x y q r s))

Will give you 27. If any pattern fails, the form produces a match fail error, which means you can use match-let as a let form with tidy type checking.

Finally, a match-let form allows tail recursion. Invoking recur in a tail position inside the form causes the match-let to be re-entered without growing the stack. For instance:

(match-let 
 (((list x y) (list 0 0)))
  (if (< (+ x y) 10000)
      (recur (list (+ x 1) (+ x y)))
      (list x y)))

Results in (141 9870) and can't blow the stack. It is an error to invoke recur in a non-tail position, but because of limitations in Emacs Lisp, it is difficult to enforce this statically.

defun-match

The form defun-match lets you write functions which pattern match on their arguments and split their calculations across multiple bodies, in a bit like the style of Shen or Haskell.

For instance, suppose we have an animal simulator, where each animal is represented by a list, the first element of which is a symbol representing the animal name. We can say:

(defun-match- vocalize ((list-rest 'cat properties))
  "Cat vocalization."
  (message "Meow"))

(defun-match vocalize ((list-rest 'dog properties))
  "Dog vocalization."
  (message "Woof"))

Then:

(vocalize '(cat :name tess))
(vocalize '(dog :name bowzer))

Functions defined with defun-match can also use recur to re-enter themselves without growing the stack. Consider a function which causes a list of animals to vocalize:

(defun-match- vocalize-list (nil) nil)
(defun-match vocalize-list ((cons animal animals))
  (vocalize animal)
  (recur animals))

recur can dispatch to any of the bodies defined for the function and it doesn't grow the stack. It must be invoked from tail position, though non-tail calls can be affected by simply calling the function.

(N.B. defun-match- with that dangling minus sign causes previous bodies to be expunged before defining the indicated body.)

Extending Shadchen with defpattern

Shadchen is an extensible pattern matching facility. We can define new patterns much in the way we define new functions, although patterns are more like macros than functions. Let's look at a simple example, and then I'll guide you through a more complex example I just added to the library using the defpattern.

A quirk of Common and Emacs Lisp is that (car nil) is nil even though nil is not a cons cell, and so does not have a car or a cdr. I hate this behavior, because its quite evident that (cons nil some-list) is different from nil, but car can't tell that - the user has to do more inspection to find this out. Bugs waiting to happen, let me tell you.

However, I'm nothing if not accommodating, and so the cons pattern in Shadchen will, in fact, match against nil. So:

(match nil 
 ((cons a b) (list a b)))

Will be '(nil nil). Let's define a pattern which is like cons, but only matches against actual cons cells, into which category nil fails to fall.

(defpattern strict-cons (car cdr)
 `(p #'consp (cons ,car ,cdr)))

A defpattern body must evaluate to a legal shadchen pattern. Each argument to the defpattern is also a shadchen pattern. So this pattern reads "define a new pattern strict-cons, which first checks that the match value is a cons cell using the p pattern, and then matches the car and cdr of that cons cell against the patterns car and cdr.".

During the expansion of a shadchen pattern matching form, user defined patterns are looked up and their expansions are inserted into the macro expansion. In short, defpattern allows you to define new patterns in terms of old patterns.

This might seem very restrictive, but Shadchen provides primitive patterns that allow you to write arbitrarily complex pattern matchers that can perform rich computations on their way to rejecting or accepting a match.

Implementing concat, a non-trivial pattern

I just used defpattern to implement a pretty complex pattern, concat and it was something of a learning experience. Writing complex patterns definitely takes some thought and practice, but hopefully this tutorial will bootstrap users to a point where their own patterns can be implemented without too much pain.

What is so complicated about a concat pattern? Well, we want concat to match the concatenation of patterns which match strings. Eg:

(concat "dog" "cat")

Should match "dogcat". Writing a pattern that has this behavior is easy:

(defpattern concat (&rest strings)
 (reduce #'concat strings))

This pattern can't match subpatterns that are anything other than strings, however. We'd really like to be able to match, for instance:

(concat (and (or "dog" "cat") which) "dog")

against either "dogdog" or "catdog", binding which to whatever the initial string contents actually are. How can we do this?

Nailing down concat's semantics.

We want concat to function this way:

If the initial pattern is not a string, then try matching that pattern against larger and larger substrings until either you run out of string to match against, or you match. If you match, then match, again using concat with the unused patterns, against whatever is left of the string after you've removed the part that matched. Repeat until all patterns are exhausted and then make sure the string has been completely consumed too.

If the initial pattern is a string, then just cleave off the same length of characters from the input, and if they match, recursively match the rest. Here is the entry point:

(defpattern concat (&rest patterns)
  (cond 
   ((length=0 patterns)
    "")
   ((length=1 patterns)
    `(? #'stringp ,(car patterns)))
   (:otherwise
    (cond 
     ((stringp (car patterns))
      `(simple-concat ,@patterns))
     (:otherwise 
      `(full-concat 0 ,@patterns))))))

The :otherwise has all the meat, but we defer it to to other helper-patterns; simple-concat and full-concat. Simple concat looks like this:

(defpattern simple-concat (&rest patterns)
  (cond 
   ((length=0 patterns)
    "")
   ((length=1 patterns)
    `(? #'stringp ,(car patterns)))
   (:otherwise
    (let* ((the-string (car patterns))
           (static-len (length the-string)))
      `(and 
        (p #'stringp)
        (p (lambda (s)
             (>= (length s) ,static-len)))
        (p 
         (lambda (s)
           (string= (substring s 0 ,static-len) ,the-string)))
        (funcall (lambda (s)
                   (substring s ,static-len))
                 (concat ,@(cdr patterns))))))))

Look at the backquoted expression. It is an and pattern, which only succeeds if all the patterns beneath it also succeed. These patterns are (p #'stringp), which asserts that the input is a string, (p (lambda (s) (string= (substring s 0 ,static-len) ,the-string))) which asserts that the input is at least long enough to contain the string we want to match against. The next form asserts that the substring of the input equal to the pattern string in length is equal to the pattern. If this is true, then the pattern matches, and we use the funcall pattern to match against the rest of the string with the leftover patterns.

The funcall pattern takes the input to the match, applies a function to it, and then matches the output of that function application to the pattern provided as its third slot.

full-concat is more complex. Note that when we invoke full-concat we provide it an numerical first argument. This number tells the pattern how far into the string to match we've looked, so it starts at zero. After all the first pattern could match the empty string. full-concat looks like this2:

(defpattern full-concat (pivot &rest patterns)
  (assert (numberp pivot)
          ()
          "Pivot should be a number.")
  (cond 
   ((length=0 patterns)
    "")
   ((length=1 patterns)
    `(? #'stringp ,(car patterns)))
   (:otherwise
    `(and 
      (p (lambda (s)
           (>= (length s) ,pivot)))
      (or 
       (and (funcall
             (lambda (s)
               (substring s 0 ,pivot))
             ,(car patterns))
            (funcall 
             (lambda (s)
               (substring s ,pivot))
             (concat ,@(cdr patterns))))
       (full-concat ,(+ pivot 1) ,@patterns))))))

Here we use and again. We first check that the input string is long enough to grab the substring indicated by pivot. If this isn't true, the match fails. We then use the or pattern to indicate a branch. Either of the or patterns might succeed, but the first to do so is the only one that will happen. The first pattern to or uses funcall to peel off the substring of the input from 0 to pivot. If the initial pattern matches, then we use funcall again to get the rest of the string, and invoke concat again.

If this match fails, then we invoke full-concat again, but increment the pivot by one, indicating that we want to check against a larger substring.

If this is confusing, and it is understandible if it is, remember the following: when writing defpatterns, or is used for flow control, and is used to assert multiple things about the input, p is used to assert individual arbitrary conditions on the input, and funcall is used to transform the input for further matching. Recursive pattern expansion is used for iteration 1.

And feel free to contact me with questions, if they come up.


1 It is a lot like writing prolog, actually. Pattern matching is a significant distance from lisp to prolog.

2 After writing this I realized we can do better. If we get a match for the initial pattern, and then check the rest of the patterns, its possible they will fail because the initial match didn't consume enough of the string. It is simple to say, "if the subsequent match fails, keep increasing the pivot and trying again." I leave it as an exercise to the reader to figure out how to represent this trivial backtrackingish thing - but you can always check the source for the solution.


          Recur for Emacs Lisp now Stand Alone   
Hi blog readers. In the past I've been very interested in extending emacs lisp with modern functional programming idioms. One of the features I like from clojure is self-recursion optimization, which I ported to emacs lisp awhile ago. It lets you write code like:
    (recur-defun* my-prod (list &optional (acc 1))
      (if list (recur (cdr list) (* acc (car list)))
          acc))
    (my-prod (list 1 2 3 4)) 

My previous code depended on my giant mess of utility library and didn't have a separate git repository. This made it hard to use and maintain. To enable more ease of use, I've factored out all the dependencies (except for cl.el) and created a separate repo on github. All you need to do to use it now is place it on your load path and say (require 'recur). One day I'll factor out the `cl.el` requirement, since apparently depending on that library is frowned upon by emacs.
          Shadchen: A pattern Matching Library for Elisp   

A pattern matching library for Emacs Lisp

One of the things I like most about Racket (and other functional programming languages) is that they have good support for pattern matching, which is a great way to simultaneously dispatch on structure type, enforce constraints on values held in a data structure, and bind variables. A tremendous amount of code is devoted to these activities, and pattern matching combines them all in a succinct, easy to read form.

It's been my intent for some time to write a complete pattern matching library for Emacs Lisp, since it is a Lisp which I use very frequently. Shadchen is the first time any attempt to do so has resulted in a reasonable product. Shadchen is a Yiddish word for matchmaker, in case you were wondering about the title. The library is available in my elisp repository. Even though it comes in a giant directory full of junk, it runs standalone.

[EDIT: Here it is in a standalone repo.]

How it Works

Shadchen's interface consists of just three forms. match is the work horse - it actually performs a pattern match. match has the syntax:

(match <VALUE>
 (<PATTERN1> FORMS ...)
 (<PATTERN2> FORMS ...)
 ...
 (<PATTERNN> FORMS ...))

The <VALUE> expression is evaluated, and then each pattern attempts to match against it. If a pattern succeeds, it's associated FORMS are evaluated, in a context where the environment has been extended by the pattern's bindings. If a match fails, the next pattern is tried. If no patterns succeed, an error occurs.

Here is an example:

(match (list 1 2 3)
  ((list x y z) (+ x y z)))

The expression (list x y z) is the pattern in the above expression. Patterns are such that they resemble the code which creates the data structure in question, in this case a three element list. The pattern (list x y z) basically specifies that a match occurs when the input value is a three element list. When a match occurs, x is bound to the first element, y to the second and so on. Hence this form evaluates to 6.

Here is another example: summing a list:

(defun* dummy-sum (lst &optional (acc 0))
 (match lst
  (nil acc)
  ((cons hd tl)
   (dummy-sum tl (+ acc hd)))))

First we specify the pattern nil, which matches only nil. When the input is nil, we return the accumulator. Then we match against (cons hd tl) which matches a cons pair, binding hd to the car and tl to the cdr. We then recur, adding to the accumulator.

The pattern matching language is rich. There are patterns for matching against literals, applying functions to values, matching against arbitrary conditions, matching against structs.

Eg:

(defstruct a-struct f1 f2)

With this struct defined, the pattern:

(struct a-struct (f1 (? #'numberp x)) (f2 (? #'stringp y)))

Matches only a struct whose field f1 is a number, and whose field f2 is a string. When that is true, x and y are bound.

Extending Shadchen

The pattern matcher is user extensible using defpattern. Defpattern defines a function which receives the pattern's arguments, and returns a new pattern which effects the desired match. For instance, the struct pattern is defined thusly:

(defun cl-struct-prepend (s)
  (intern (format "cl-struct-%s" s)))

(defun make-cl-struct-accessor (struct-name slot) 
  (intern (format "%s-%s" struct-name slot)))


(defpattern struct (struct-name &rest fields)
  `(and
    (? #'vectorp)
    (? #'(lambda (x) (> (length x) 0)))
    (? #'(lambda (o)
           (eq (elt o 0) ',(cl-struct-prepend struct-name))))
    ,@(loop for f in fields collect
            `(funcall 
              #',(make-cl-struct-accessor struct-name (car f))
              ,(cadr f)))))

Note that the defpattern body must return a valid pattern in terms of previously defined patterns (or itself, patterns can be recursive). In this case we use the patterns and, ?, and funcall to create a new matcher.

Supported Patterns:

Shadchen supports the following patterns:

Shadchen supports the following built-in patterns.

<SYMBOL>

Matches anything, binding to that value in the body expressions.

<KEYwORD-LITERAL>

Matches only when the value is the same keyword.

<NUMBER-LITERAL>

Matches only when the value is the same number.

<STRING-LITERAL>

Matches only when the value is string= is the same string.

(CONS <PATTERN1> <PATTERN2>)

Matches any CONS cell, or NIL, then matches <PATTERN1> and <PATTERN2>, executing the body in a context where their matches are bound. If the match value is NIL, then each PATTERN matches against NIL.

(LIST <P1> ... <PN>)

Matches a list of length N, then matches each pattern <PN> to the elements of that list.

(LIST-REST <P1> ... <PN> <REST-PATTERN)

Matches - to elements in at list, as in the LIST pattern. The final <REST-PATTERN> is matched against the rest of the list.

(QUOTE DATUM)

Only succeeds when DATUM is EQUALP to the match-value. Binds no values.

 (AND <P1> .. <PN>)

Tests all <PN> against the same value, succeeding only when all patterns match, and binding all variables in all patterns.

 (? PREDICATE <PATTERN>)

Succeeds when (FUNCALL PREDICATE MATCH-VALUE) is true and when <PATTERN> matches the value. Body has the bindings of <PATTERN>.

 (FUNCALL FUN <PATTERN>)

Applies FUN to the match value, then matches <PATTERN> against the result.

 (BQ EXPR)

Matches as if by BACKQUOTE. If EXPR is an atom, then this is equivalent to QUOTE. If EXPR is a list, each element is matches as in QUOTE, unless it is an (UQ <PATTERN>) form, in which case it is matched as a pattern. Eg:

(match (list 1 2 3)
  ((BQ (1 (UQ x) 2)) x))

Will succeed, binding X to 2.

(match (list 10 2 20)
   ((BQ (1 (UQ x) 2)) x))

Will fail, since 10 and 1 don't match.

(values <P1> ... <PN>)

Will match multiple values produced by a (values ...) form.

(struct struct-name (field-name <P1>)
                    (field-name <P2>)
                    ...
                    (field-name <P3>))

Which matches when the input is a struct of type struct-name, whose fields match <P1> ... <PN>.

Conclusions

If you are an elisp hacker like me, now you don't have to envy those snooty Racket, ML and Haskell programmers. Happy Hacking!

(PS - the library is also available in Common Lisp, check my github).

(PPS - I love Racket, ML and Haskell programmers and they aren't at all snooty.



          Persistent Hash Tables for Elisp   

Another quick update: I've added an implementation of persisten hash tables to my emacs library. These are built on top of random access persistent lists and are similar to Clojure's persistent table datatype.

They are like hash tables (with similar performance) except that set operations return a new table - the old table persists unmodified.

You use them like so:

(require 'persistent-hash-tables)

(setq tbl ({} 'a 10 'b 11 'c 12))
(setq tbl2 (ptbl-set tbl 'c 100))
(ptbl-get tbl 'c) ;-> 12 
(ptbl-get tbl2 'c) ;-> 100

Such tables allow functional programming over table abstractions. These might be a better fit than association lists if you have a large number of associations and/or you are doing a lot of functional updates.



          Frank Tanki Named CMT General Manager In Addition To His TV Land GM Role   
Four months after Frank Tanki was named General Manager of TV Land, he also is being appointed GM of sibling CMT. The news follows the departure earlier today of longtime CMT president Brian Philips, who stepped down after 16 years at the helm of the Viacom network. Tanki will oversee day-to-day operations at CMT including Programming, Marketing & Creative and Communications, and will work with CMT's development team. Working from both the New York and Nashville offices…
          Campaign Manager   
Global&rsquo;s Make Some Noise Campaign Manager Job description&hellip; We&rsquo;re looking for an outstanding individual to help lead our charity appeal across the UK&rsquo;s biggest commercial radio brands. The Campaign Manager is responsible for developing and delivering Global&rsquo;s Make Some Noise activity across Global&rsquo;s high-profile brands, as well as owning our Challenge portfolio, such as sponsored runs, treks and cycles. Who we are&hellip; Global&rsquo;s Make Some Noise is the charity founded by Global, the media and entertainment company. Using Global&rsquo;s famous brands &ndash; Heart, Capital, Classic FM, Smooth, Radio X, LBC, Capital Xtra and Gold &ndash; we help brilliant, small charities get heard and raise much-needed money for disadvantaged children and young people. What you&rsquo;ll be doing&hellip; As a senior member of the team, you will be responsible for conceiving and delivering Global&rsquo;s Make Some Noise content, initiatives and events across your allocated brands and broadcast centres. As well as managing year-round fundraising initiatives, a focus of the role is to ensure the success of our big appeal in October. Working closely with programming teams, you will devise and project-manage this activity to ensure that we raise the maximum amount of money for the charity, create great content and drive a good return on investment. Your forward-thinking attitude and commercial awareness will help you stay on the look-out for the next opportunity to raise more money and maximize coverage for the charities we support. In addition to brand-led fundraising, you will be assigned responsibility for other key areas of fundraising, according to the priorities of the charity. For example, you will oversee our 2017/18 Challenge portfolio, including treks, runs and walks, which involves planning strategy, driving income and ensuring excellent participant care and communications. You will have the following skills and experience&hellip; You will have at least 5 years&rsquo; experience of successful project management, ideally in a charity, media, events or a client-focused environment. You&rsquo;ll have a good grasp of fundraising and marketing principles; understanding personal motivations, how to inspire and reward individuals and groups, and how to communicate your key messages. You will be a creative, innovative thinker and back this up by putting in place robust processes and end-to-end thinking. You&rsquo;ll be a strong line manager, able to inspire and support your direct report. You will be used to hitting deadlines under pressure, whilst adept at adjusting plans if situations change. You&rsquo;ll be confident dealing with senior management and getting the best out of high-profile talent. You will be comfortable working across digital, social and video platforms. You will have a good knowledge of Global&rsquo;s brands and audiences and be comfortable working within a digital environment. You will have a good head for figures and able to manage budgets. You&rsquo;ll have strong communication skills &ndash; written and verbal &ndash; and be a confident relationship builder, quick to understand other points of view and how to respond positively to these. A proven experience of charity and fundraising is an advantage; in particular, knowledge of Challenge events, such as sponsored treks, runs and walks. You&rsquo;ll demonstrate our Global behaviours&hellip; Straight talking and sincere Love to deliver Obsessive about detail Strive to do it differently And also our Global Boss behaviours&hellip; Passion for people Coaching not critiquing Understand your impact Having humility - visit media.info to find out how to apply
          Breakfast Producer, Heart Wiltshire   
The Breakfast Producer reports directly to the Managing Editor of The West Country (Wiltshire) Broadcast Centre and as part of the Programming team, you will be responsible for creating and managing all the output from the station?s breakfast show.  This role requires extraordinary levels of creativity, people management and strategic planning.   An experienced producer you?ll work as part of the Programming team and be responsible for creating and managing the Heart Wiltshire breakfast show with Ben and Mel. What will you be doing --------- * You?ll work closely with the Managing Editor, Station Producer and the on air talent to create compelling content that targets and grows the station?s core audience. * You?ll work in the live show environment on a daily basis, and drive planning and creative sessions post the show each day. * You?ll be obsessed with the finer details that go into making every piece of content succeed * You?ll assist in the co-ordination and administration of the relevant parts of all SPI activity which will include the writing and production of scripts and making sure the highest levels of compliance are adhered too. * You?ll assist in the implementation of plans and strategies of Heart programming. * You?ll oversee every channel the breakfast show uses, from online to social media including making and posting videos. What we expect of you  --------------------- * You?ll be full of ideas but also possess the ability to stimulate others to create great content.  You?ll always be thinking further ahead, and thinking strategically. * A natural problem solver, together with your creative flair and judgment you?ll choose the right programming solutions for Global. * You?ll know and respond positively to the needs and expectations of others to achieve the right outcome. * You?ll understand the target audience inside out and have a sound understanding on how to grow audiences  * You?ll be confident when working towards your own personal objectives as well as helping others in achieving business goals, regularly setting and stretching new standards and goals. * You?ll have loads of experience from working in a similar type role and will be confident using Genesys, Adobe, GUSTO online content management systems (or similar) and should be competent on social media including Twitter and Facebook. Who you will work with ---------------- * Managing Editor * Station Producer * Programming/Marketing Team * S&P Team * Engineering * Online and Social networking teams - visit media.info to find out how to apply
          Back   
Dearest Blog,

I remember sitting at a computer and writing unintelligible bullcrap (also called code) for 9 hours a day. The whole process (called programming) was too monotonous for my wandering mind. I was well on my way to becoming a redundant IC on the motherboard of computer. That is when you came into my life. I looked forward to parking my thoughts on you. My mind farted on you all the undigested thoughts it had ruminated on. You took it all silently.

I have good news. I am back.

Whether you like it or not, my mind will continue to fart on you.

Yours,
Me.
          Excuse the crap and move on   
I have been busy with exams. I still have 3 more to go. But for now i am just plain bored. So here i blog. I think the hibernation is over. I think i am back to normal programming. But you never know.

Blogging demands predictability - Predictability is boring - Hence, blogging is boring.

But no, wait! At the micro- level, i think (with an almost uncluttered mind) - Nah forget it. A few random thoughts swirling through my mind at the moment

To blog means to write. Write your own thoughts. Type what you feel in (long-winded) sentences giving the impression that you are one thinking specimen.

But what happens when your fingers are too slow to type what your mind is thinking? Too slow to keep pace with the thoughts swirling inside? What if your fingers are still at point A and the mind has reached E? What if your mind does not have the space and time to save points B, C and D?

B, C and D are lost. Now what? Anyways, i have no idea. I just think i have made my point. I think my fingers are too slow.

I would like to end it here. I am just so bored. I thought i should post something here. So i typed this out. Excuse the crap and move on.
          Netflix to Feature Will Smith, Stranger Things and Defenders at San Diego Comic-Con   
Netflix to Feature Will Smith, Stranger Things and Defenders at San Diego Comic-Con
Netflix has become a powerhouse in the original programming arena, and now they will also be making a huge splash at this year's San Diego Comic-Con.This year, the streaming service will not only have a panel for the popular Stranger Things series for season 2, but also a panel for Marvel's The Defenders. On top of that, they will also be bringing along Will Smith and the rest of the cast of Davis Ayer's movie Bright.Netflix will also have a booth on the convention floor, #3729, and The Netflix Experience over at the Hilton Gaslamp. The experience will feature giveaways and sneak peeks of their upcoming series.The following is their schedule:Thursday, July 20Bright and Death Note, 3:15pm, Hall H, Ayer's new movie Bright is set in an alternate present-day world where humans, orcs, elves and fairies have co-existed since the beginning of time. The director, Smith and castmembers Joel Edgerton, Noomi Rapace, Lucy Fry, and Edgar Ramirez will be on hand to discuss, as well as serve up exclusive footage. Death Note, is based on the Japanese manga written by Tsugumi Ohba and Takeshi Obata, and the cast will be in tow to talk.Netflix Surprise Screening, 10PM in The Horton Grand TheaterFriday, July 21Marvel's The Defenders, 5:15pm in Hall H. All the Marvel heroes who had their owns shows on Netflix - Jessica Jones, Luke Cage, Iron Fist and Daredevil - finally team up. Marvel TV chief Jeph Loeb and cast will offer up an exclusive look. If this is anything like what Marvel TV did with Agents of S.H.I.E.L.D. at Comic-Con a few years ago, maybe attendees will get to see a sneak peek at the first episode of Defenders.Saturday, July 22Stranger Things season 2, 3:00pm in Hall H. Finally a look at some never-before-seen-footage. Season 2 picks up in the chaotic aftermath of Will Beyer's return to a world that will never be the same.

          Freelance Programming without a Marketing Presence   

Happy Friday, everyone.  I’ve had no shortage of questions about freelance programming and consulting since I started reader question Fridays.  I’ve talked about speaking to buyers and about moonlighting, among other things.  And in all of these posts, I bang the drum for building a marketing presence over the course of time.  But today’s reader question […]

The post Freelance Programming without a Marketing Presence appeared first on DaedTech.

  

          Engineer, Software III - Mason, OH - Quest Diagnostics - Mason, OH   
Proficiency in Enterprise Java programming plus one or more modern programming languages such as Ruby, Python, or C#....
From Quest Diagnostics - Thu, 25 May 2017 18:08:53 GMT - View all Mason, OH jobs
          Jeff Nichols' plan to make Arkansas a cinema paradise for film lovers   
He and filmmaker Kathryn Tucker lead the Arkansas Cinema Society.

Jeff Nichols hasn't lived in Arkansas in more than a dozen years, but the acclaimed filmmaker remains deeply connected to his home state. He visits family and friends in Little Rock regularly, and set and shot two of his five films, "Shotgun Stories" and "Mud," here. His likely next one, "Alien Nation" — about "two intelligent species crashing together and trying to make it work," he says — takes place in Arkansas, at least in the version of the script he's working on now.

So it's not entirely surprising that Nichols is behind the Arkansas Cinema Society, a new initiative aimed at helping foster Arkansas's film culture. Nichols, who has lived in Austin, Texas, since 2002, wants to model the new venture on the Austin Film Society, founded in 1985 by Richard Linklater ("Dazed and Confused," "Boyhood"). The AFS hosts regular screenings, provides grants to filmmakers and teaches people how to make movies. When Nichols first got to Austin as a fledgling filmmaker with no money, a slim resume and a lot of ideas, the AFS was where he found his community. Today, it's where he meets up-and-coming filmmakers like Kat Candler, on whose 2014 film "Hellion" Nichols served as executive producer, and it's where he sees screenings of films he'd otherwise miss. Nichols calls the AFS a "magnet" for people who are interested in "production or film theory or just watching movies." The goal is for the Arkansas Cinema Society to be the same sort of hub.

The kickoff event will come Aug. 24-26, with a couple of well-known filmmakers coming to Little Rock's Ron Robinson Theater and the screening of some of their movies. "The goal would be that they show a film that inspired them during the day and talk about it, and in the evening show one of their films. And possibly have midnight screenings, whether they attend it or not," Nichols said, adding that he would moderate discussions with the filmmakers, whose names he's not ready to reveal. Then, beginning in September, the ASC will host monthly screenings at Ron Robinson. Depending on the audience and the ASC's budget, the screenings will later become twice monthly and then weekly. Perhaps around the holidays, Nichols will lead the first of three seminars on filmmaking — one each on writing, directing and editing. Nichols has had some practice. He recently did a master class at his alma mater, the University of North Carolina School of the Arts, and he's dropped in a few times to a class on his film "Mud," which is being taught at the University of Texas this semester.

Helping bring the ASC to reality is another filmmaker and Little Rock native, Kathryn Tucker. After working for several years as an assistant director on the likes of "Glee," "This Is 40" and "Oblivion," she moved back to Little Rock in 2012, and later met filmmaking brothers Josh and Miles Miller. She agreed to produce their feature debut, "All the Birds Have Flown South." She and that film's cinematographer, Gabe Mayhan, started dating and later married. They have a son who is nearly 2 years old. Tucker also produced the feature adaptation of Daniel Campbell's "Antiquities," with Mayhan again serving as cinematographer.

The formation of the ACS grew out of a meeting between Nichols and Tucker when Nichols was in town in November for a screening of his latest film, "Loving," to benefit the Tiger Foundation of Little Rock Central High School, where he and Tucker were classmates. The conversation got around to what a shame it was that the Little Rock Film Festival called it quits in 2015. When Tucker mentioned there was interest in reviving the festival, Nichols suggested instead that they go for a year-round model.

Tucker is leading the ASC on the ground as executive director of the newly established 501(c)(3) nonprofit. Nichols is chairman of the board, for which Tucker and Nichols recruited an all-star membership that includes former Gov. Mike Beebe, Mary Steenburgen, local writer and television creator Graham Gordy, producer Jayme Lemons and Yellow Rocket Concepts creative director Amber Brewer.

Brent and Craig Renaud, the acclaimed documentary filmmakers who co-founded the Little Rock Film Festival, cited their busy professional schedule as a reason for shuttering the fest after nine years. Because of their workload, they didn't have the time needed to raise money or manage the logistics of the fest. How will an organization led by two working filmmakers avoid the same fate?

"I'm going to see it through no matter what that takes," Tucker said. "We're building this thing slowly and laying a really good foundation. We've also got so many people on our board who aren't going to let it fail."

Nichols stressed the importance of community involvement and running lean. "I hope that Kathryn and I aren't the engine for this thing. Or a better way to put it is, we build the engine, but the fuel is the community, and it will just sit there not running if the community doesn't respond. If they don't, we'll move on and go do something else. But it's on our shoulders to build something that runs on not much gas."

For budget reasons, Nichols doesn't want to see the ACS start a traditional film festival.

"When you throw a big event, it's like throwing a big party. You've got to bring in a lot of people from out of town, and you've got to pay for their airfare, and you've got to pay to put them up in a hotel, and you've got to get cars to take them places, and you've got to have places to do multiple screenings, and you've got to sell tickets and have to have an infrastructure to sell tickets, and you have to have a big party and pay for catering and do the decorations. You have to do all this shit, which has nothing to do with getting as many people together to watch a movie."

A model to grow toward might be Ebertfest in Champaign, Ill. Founded by the late film critic Roger Ebert, the fest does no counterprogramming and isn't competitive. It's a tightly curated event. When the critic was alive, it was "Roger Ebert saying, 'Hey, take a look at these films,' " said Nichols, who screened "Shotgun Stories" there in 2007. He and Tucker say the August kickoff event could grow into a version of Ebertfest down the road.

But don't look only for indie movie fare at it or at ACS screenings throughout the year.

"I'm not simply a guy who loves European arthouse films," Nichols said. "Movies are fun. They're amazing and they can open your mind and they can be a blast to experience in a room with other people, and I want the programming to reflect that. For every Cassavetes series, you have one that's a Sam Raimi ("The Evil Dead," "Spider-Man")."

Tucker echoed a similar sentiment. "I feel like a lot of film nerds — a term I use lovingly because I'm one of them — who program film festivals, show things that are way too obscure for our audience. They want to show the beauty of these crazy Japanese films and these terrible horror films, and they say, 'If only people would just see these, they'd see how awesome they are.' But a lot of people don't." She said she thought a lot of people either wanted to see how "Spider-Man" was made, or they want to see films getting buzz at festivals.

Though Nichols and Tucker want the ACS to grow responsibly, they have grand visions for the nonprofit. Most immediately, they hope to partner with and help promote all existing film festivals and screenings throughout the state. They encourage anyone with ideas for partnerships or anything else to connect via arkansascinemasociety.org.

"If you're from Arkansas and you're into movies, that's awesome. All ships rise, is my philosophy. That's how it's been in my film career," Nichols said.

Once the ACS has made some strides on fundraising, Nichols said, he wants to start a grant program modeled on one at the Austin Film Society. "If you can prove that you've been to a film festival with a film [or been accepted to a festival], we'll give you a grant to help out with travel. Even after it's done. I remember with 'Shotgun Stories,' I was so broke. [The AFS] gave me something, I can't remember exactly what, maybe it was $250, but it was a chunk that really helped. You don't have to put a committee together to judge. It's, 'Cool, you made something. Cool, you got it into a film festival. Let us help you.' "

Down the road, he said, he'd like to create another grant program modeled on the Texas Filmmakers Production Fund, where a panel would review submissions for support of creative material or productions in process. "That's later down the road because that's more complicated," Nichols acknowledged. "And you have to raise a certain amount of money just for that."

Another dream: working with single-screen theaters in smaller towns throughout Arkansas. "How amazing would it be if we could help those places out?" Nichols asked. "If we could help them stay open or improve their screening capabilities. Maybe in exchange for that, we get to show a movie there once a month or once in a while. Admittedly, this is coming from a guy who has made movies that typically play in one or two places and people have to drive to see them." Even more far out would be following the Alamo Drafthouse Cinema's Rolling Roadshow model, where the ACS would have a massive inflatable screen and a cinema-grade projector to take on the road throughout the state, Nichols said.

Nichols calls the demolition of the Cinema 150 on South University Avenue in 2015 "a travesty."

"In my dream world, you'd flash down the road 15 years, and we'd have a single screen dome theater, with Arkansas Cinema Society offices in it, a restaurant, maybe one of John [Beachboard]'s breweries." (Beachboard is a longtime friend and Lost Forty co-owner.)

Tucker might know a real estate guy. Her father, Rett Tucker, of the development and real estate firm Moses Tucker, is a member of the ACS board.



          The Little Rock millage question: taxation without representation?   
Frustration with the state's takeover of Little Rock schools scrambles the usual political lines on an upcoming millage election.

On May 9, residents of the Little Rock School District will vote on a ballot measure that would allow the district to make facilities improvements totaling $160 million, if approved. According to LRSD Superintendent Mike Poore, the measure is not a new tax, since it would not raise the rate of 46.4 mills now levied on property owners. Instead, by refinancing debt on an existing bond, the district would push back the expiration date of a portion (12.4 mills) of the current tax rate by 14 years, from 2033 to 2047. The LRSD says the projects to be funded by this extension of debt would include construction of a new high school in long-neglected Southwest Little Rock, major renovations to the McClellan High School campus and improvements to almost every school building in the district, from roof replacements to air conditioner upgrades to new windows. The work could begin as early as this summer, with some efforts completed in time for the 2017-18 school year.

So why are many public school advocates — including the city's most visible African-American civic leaders — urging a "no" vote on May 9?

In a word, distrust. Since January 2015, when the district was taken over by a 5-4 vote of the state Board of Education, the LRSD has been governed not by a locally elected school board, but by Arkansas's education commissioner, Johnny Key, a gubernatorial appointee. The proximate reason for the takeover was low student performance at six schools (out of the district's 48 campuses) that were deemed to be in "academic distress" based on test scores over a three-year period. But many in Little Rock saw other reasons for the state's actions: a racially motivated animus toward the majority-black local school board, which was dissolved by the January 2015 state board vote, and a desire to promote privately operated charter schools at the expense of public ones. For those critical of the takeover, the past two years have only confirmed these suspicions.

Two charter operators in Little Rock, eStem Public Charter Schools and LISA Academy, are dramatically expanding and will likely draw many students away from the LRSD in the coming years — perhaps thousands. The state board authorized their expansion plans in March 2016 over the vocal protests of the district's erstwhile superintendent, Baker Kurrus, who was fired by Commissioner Key shortly thereafter. Kurrus had served just one year on the job, having been hired by Key in 2015. Then, in the 2017 legislative session, the Republican majority created a new law that will soon allow charters to force districts to sell or lease school buildings deemed "unused or underutilized." The LRSD will close two buildings at the end of the current school year, and the ongoing migration of families toward charters raises the possibility of more closures in the future. And more charter operators are eyeing the Little Rock market: In March, a New Orleans-based operator called Einstein Charter Schools began the application process to open a campus in the city. All of this means the district is asking taxpayers to shoulder millions of dollars in additional debt to improve public buildings at a time when the future ownership of those buildings is itself in doubt.

Those who believe racial prejudice propelled the takeover find fault both with charter growth and with the district's priorities while under state control, especially the recent closure decisions. The LRSD soon will shutter two K-5 elementary schools, Franklin and Wilson, along with a pre-K facility, Woodruff Early Childhood Center. The LRSD's alternative school, Hamilton Learning Academy, will move to the Wilson building, with the old Hamilton building likely to be used by adjacent Bale Elementary. Franklin and Wilson are located in majority-minority neighborhoods and their student populations are mostly African-American and Latino. Though many of the projects outlined in the LRSD's list of capital improvements to be funded by the May 9 vote would benefit schools serving black and Latino students — the Southwest Little Rock high school most of all — many activists are deeply skeptical the district will follow through with those promises. Because the ballot measure does not specifically state which projects will receive funding, some warn the $160 million could be directed toward schools in more affluent, whiter neighborhoods rather than those with the greatest needs.

Superintendent Poore is at the heart of this controversy. The decision to close or repurpose schools was his, and he defends it as a difficult but necessary choice. (Key, who acts as the district's board while under state control, gave final approval.) For years, the LRSD received $37 million annually from the state as a result of a desegregation lawsuit — over 10 percent of its budget — but those payments will soon end. Although both Poore and his predecessor, Kurrus, made major cuts in other areas, the district still had to trim $11 million from the 2017-18 budget.

Poore told the Arkansas Times recently that school closures were painful, but also long expected. "The reality was we had 2,300 vacant elementary seats — 4,100 when you add in the portable [buildings] — and so we took out of the mix two elementaries with maximum capacities being just under 1,000." If the LRSD doesn't close buildings, Poore argued, it would have to cut back on staff. "Yes, these two schools closing, and the preschool closing, that has an impact on our communities, but I'll tell you what could have had a bigger impact. ... When 80 percent of your business is people, now you're talking about privatizing food service, privatizing custodial. ... We could have been impacting hundreds of employees if we'd taken that route."

As for the charter school issue, Poore said he urged legislators to vote against the recent legislation, which will give charters the ability to wrest underutilized buildings away from districts. Poore has not been as outspoken as Kurrus on the potential harm that charter growth can deal to the LRSD, but he's made it clear he doesn't want the district's facilities to be colonized by outside schools. For that reason, he is moving quickly to find a new use for the Franklin and Woodruff buildings, and the district is now reviewing proposals garnered by a recent RFP.

"We're trying to be aggressive about repurposing," he said, adding later, "I don't believe we want to enhance the number of charter seats [in Little Rock] right now."

Poore argued that capital improvements are necessary if the district hopes to retain students or to win back families that have left the LRSD for charters or private schools. He pointed to studies showing modernized facilities can boost student achievement by several percentage points. "I can't control [charter growth], but what I can control is what we do. ... If you've improved academic performance and you're creating a better learning environment and it's a more pleasing building to kids and patrons, that prevents some of the issues that we're already facing right now in terms of our competitiveness. And it ties into the bigger picture of what this district has to do to have the community believe that, and, more importantly, have families say, 'I want my kid in Little Rock schools.' "

Poore also said the proposed debt extension on the May 9 ballot is "just the first phase" in a larger, long-term plan to address the full $340 million in needs identified by a 2014 study of district facilities, which will eventually require a modest millage increase. Getting the ball rolling with an initial $160 million investment will build confidence for that future vote, Poore believes. "My No. 1 target that has been given me since I came in, from the governor, the commissioner and this community, is [to] get local control back. But the No. 1 thing to do is to serve kids well, and they deserve to not have a roof that leaks. They deserve to have air conditioning that creates fresh air [and] hallways that aren't dark and dingy," he said.

Yet for many, the May 9 vote itself is a reminder that LRSD voters have not weighed in on a school issue since the September 2014 local board election — a few months before the state takeover dissolved that body. State board member Jay Barth, a Little Rock resident, recently pushed his colleagues to set a timeline for release of the district from state control, but the effort foundered.

"There are people who are critical," the superintendent acknowledged, "who say, 'Really, Mike Poore? You're coming to ask us in May to extend the debt, and you just closed schools? And really, you're coming when we don't even have local control?' Well, on the local control issue — this does allow every citizen in this whole community right now [to speak]. You can't get a truer form of democracy than everyone gets to go vote on this issue. So in that sense, it really is a deal to let the community say, 'Here's what we think.' "

And what does the community think? To get a sense, we asked school advocates on both sides to make their case.

Maxine Allen

I am a sixth-generation Little Rock residential property owner. I witnessed my parents paying a poll tax in order to vote. I am a product of the segregated and then newly integrated Little Rock School District. I attended the district at a time in which white schools received textbooks first. By the time black schools got the books, they were soiled, pages were missing and text had been marked through. In spite of all of that, I believed I received an excellent education.

I am a parent who served as a "room mother" and whose children attended Woodruff, Pulaski Heights and Williams Magnet Elementary Schools; Pulaski Heights, Horace Mann Magnet and Forest Heights Middle Schools; and Parkview and Central High Schools. I believe my children received a quality education.

I am a pastor who has served as a volunteer in public schools. I believe every child needs a great school where they are immersed in diversity, encouraged to think critically and empowered to expand their worldview. As a United Methodist, I operate within our tradition that declares education is a right of all children. This is affirmed by scripture, which calls us to "train children in the way they should go" (Proverbs 22:6).

However, I believe that we must regain local control of our schools BEFORE voting for any millage. The LRSD is no longer in academic distress (if it ever was, as six schools do not a distressed district make). While I have many friends on the opposite side of this issue, I cannot in good conscious vote for the millage until we have an elected LRSD board. There's just something about the basic American principle, "No taxation without representation." For these reasons, I urge you to vote against the millage!

Rev. Maxine Allen is the president of the Christian Ministerial Alliance.

State Sen. Joyce Elliott

Little Rock School District students deserve not just better facilities, but world-class facilities. So let's just stipulate that we all agree on that point and try to understand why many of us feel as if we are redlined to bear the burden of a master plan not revealed to us. For example, most of the millage extension supporters I have observed do not have schools closing in their neighborhoods.

LRSD students, parents/guardians, educators and others deserve to have their district back, not under state control. To this date, there has been no compelling reason put forth for the state to have assumed authority over the LRSD when 42 of the 48 schools in the district — 87 percent — were not in distress. The number has since climbed to 45 schools, or 94 percent. It was a raw exercise of power by folks who gave vague answers such as, "Well, something needed to be done." Yes — about the few schools in academic distress. Taking over the entire district was totally unwarranted. If I have a couple of teeth that need to be extracted, would you extract them all using the logic "something needed to be done"? Certainly not. But that's just what the State Board of Education did.

And now the extended apparatus of the board, Commissioner Key, has wielded power far beyond addressing the schools in academic distress by hiring a superintendent (Baker Kurrus), firing that superintendent, installing present Superintendent Michael Poore and unilaterally closing schools in historically underserved neighborhoods south of Interstate 630. And now, folks who advocated for the state board to seize control of the LRSD, such as the Little Rock Regional Chamber of Commerce, are leading the effort to extend the millage with glossy flyers and bright yard signs.

I cannot vote for a tax without elected, accountable representation. I want the best for LRSD students, but I am not prepared to dishonor the blood-soaked history of all those who sacrificed to guarantee me full citizenship rights. There are many voters who share my visceral feeling that a tax election imposed by one person is a betrayal of democracy. There are others, it appears, who have no problem with it and who are cheerleading to carry out a vote under conditions you might find in a developing country.

This election is a deliberate attempt to force us into a false dilemma: On May 9, choose better facilities for students, or choose to insist on restoration of our rights as citizens. Let us not choose but work together to demand both. Let's not give in to political extortion.

Will the folks who pleaded for the takeover now join in the demand to return the LRSD to us? I hope so. I am ready to join hands with you.

Joyce Elliott is a Democratic state senator representing a portion of Little Rock and a former teacher.

Bill Kopsky

For the first time in my life, I will be voting AGAINST a bond measure for important civic infrastructure. My opposition to the bond extension comes down to trust, transparency, accountability and inclusion.

A deep distrust rooted in more than a century of racial and economic segregation is the LRSD's biggest challenge, not finances. The state takeover and Education Commissioner Johnny Key, our one-man appointed school board, have made it worse.

Commissioner Key consistently refuses to meet with the community and has failed to produce any vision for the school district other than a massive, polarizing charter school expansion. He is barreling ahead despite clear data showing that charter schools fail to outperform LRSD schools with similar demographics. Those charters leave the LRSD with a more segregated student population and significantly fewer resources to meet their needs.

The greatest tragedy of Commissioner Key's charter mania is the distraction from effective education reforms we could be working on together. We should be expanding community schools, not closing neighborhood schools. We should be recruiting and developing more world-class teachers, not demoralizing and chasing them away. We should be building community partnerships to help our students meet their full potential, not alienating wide swaths of the city. We should be dramatically expanding early childhood education, summer and afterschool programs, and supports for low-income students and English-language learners.

The LRSD is attempting some of these reforms, but it is constantly being undermined by the state. In 2015, legislators attempted to hand the entire district over to private charter corporations. Then, the commissioner fired our superintendent, Baker Kurrus, for telling the truth about charter expansion's harmful effects. This year, the legislature passed a law requiring us to give closed school buildings to charter corporations while those in control of the district simultaneously shut down schools in the most vulnerable parts of town in a sham public engagement process.

Now with no trust, transparency or accountability, and no district-wide plan for the future, Commissioner Key asks for a bond extension? It's outrageous. How could anyone trust him with a blank check?

Those arguing for the bond extension rightly point out that LRSD facilities have many needs. They fail to make a case for the urgency of doing this while we remain under state control. The bond that we are being asked to extend doesn't expire for years to come.

There's no reason why Little Rock taxpayers can't make this decision once LRSD is back in local control. The schools our kids deserve are rooted in evidence-based and community-driven reforms. In the coming years I hope to vote for a transparent and accountable bond measure that unites our city. For now, VOTE AGAINST.

Bill Kopsky is a Little Rock School District parent and public education advocate.

Marion Humphrey Sr.

I intend to vote against extending this millage because I do not trust either Education Commissioner Johnny Key or the Arkansas State Board of Education.

Key was placed in charge of the district after the state board's racist and immoral vote on Jan. 28, 2015, to remove the lawfully elected and majority African-American district's board of directors. The takeover came after the district's board was notified by letter on July 10, 2014, that six out of its 48 schools were in academic distress. The district was given just one semester in which to correct the acknowledged problems with those schools. No further academic proficiency testing was done between the time of notification in July and the time of the takeover the following January. The fix was already in.

The state board simply wanted someone other than the duly elected district board members in control, even if that meant recklessly throwing the district into disarray and chaos in the middle of the school year. The majority of the state board removed a local school board composed of people whom the Walton Family Foundation and the Little Rock Regional Chamber of Commerce did not want to be in charge of the district — and especially its $330 million budget.

Yet Key has not made himself available to the general public to discuss why the millage extension is necessary. Whether he does not want to disclose what he intends to do with the additional money or whether he does not have time to be bothered with some of us, Key is simply not accessible to many district patrons. Perhaps he has targeted the voters he thinks he needs for passage of the millage extension and sees no need to waste his time with others.

I am not convinced that additional money is needed to make the capital improvements that proponents suggest, and I am not confident in the judgment of Commissioner Key. If he cared about families living south of I-630, why would he close schools such as Wilson, Franklin, Woodruff and Hamilton? After all, Wilson received an exemplary rating from the Arkansas Department of Education. If our concern is truly about a great education for the children of this district, why would an intelligent and thoughtful educator close an exemplary school and do collateral damage to its neighborhood as well?

For my first time ever, I intend to vote against a school millage.

Marion A. Humphrey Sr. is a retired Pulaski County Circuit judge and a pastor at Allison Memorial Presbyterian Church.

Dr. Anika Whitfield

It is really simple. The LRSD is currently being managed by two men, both of whom were appointed to their positions, are not natives of Little Rock, did not attend the LRSD and do not have children who attend the LRSD now or in the past. Education Commissioner Johnny Key and Superintendent Michael Poore are making decisions for our district without locally elected representation or accountability.

Key will argue that he appointed the LRSD Community/Civic Advisory Board to represent the people of this city. The problem with that argument is that Key chose persons who will serve his interest in supporting the expansion of charter schools. Key has been publicly lobbying to replace traditional public education options for students with private-public charter schools.

In addition, Key has refused to meet in public settings to engage with parents and community members who have questions about school closures, community impact studies, plans for academic improvements in schools designated to be in academic distress, ways to assist traditional public schools, and ways to help advertise, recruit and promote the great programs and opportunities for students, parents and teachers in the LRSD — just to name a few of his denied requests for public meetings.

Given the fact that Key is the sole board member of the LRSD, the only person who makes the final decisions for the LRSD, and the sole person who has the power to overrule Poore's decisions, it would be unwise to hand more tax money over to this appointed leader who has shown little to no respect for the residents of Little Rock, the students who attend the LRSD and their parents. Key has publicly said that he would not be open to yielding to the Little Rock Board of Directors and mayor to conduct neighborhood impact studies before closing schools, displacing students and school personnel and taking away public, anchoring institutions from people who fund and support them.

Voting for the May 9 LRSD millage tax extension would be like Walmart giving Target money and expecting Target to use those funds to improve Walmart's business. Not going to happen. It would be like giving a thief keys to your home and expecting the thief to protect your home and possessions. Not a wise choice. I strongly encourage voters to vote AGAINST the May 9 LRSD millage tax extension.

A better investment of taxpayers' dollars, time and resources would be to directly invest in students, schools, teachers and families in the LRSD. This way, you know that your dollars will be spent on students and teachers that need these resources, and not on brick and mortar. Invest directly in students, teachers, families and schools in a way that you can ensure is actually meaningful and not destructive to the vitality of the LRSD.

Dr. Anika T. Whitfield is an LRSD graduate, an alumna of Franklin Elementary and a volunteer in the district.

Faith Madkins

As I walk the halls of McClellan High School each day, I see a small community high school filled with Lion pride, exceptional talent and growing potential. Unfortunately, with the good also comes the bad. I have immense pride in my school, but sadly I cannot say the same about my district. I have been in the Little Rock School District all of my life since kindergarten — bouncing around from school to school — and I've seen most of what the district has had to offer.

Our buildings are older than most of our parents. In fact, most of our grandparents can remember these schools being built. That means everything in these buildings is outdated. Things that would have sufficed 60 years ago would never make the cut today.

To further explain what I mean, I want to place you in my shoes. So, here we are at the doors of McClellan. It's springtime and the flowers are blooming. The sun is out, and it is beautiful outside. The bell sounds, and it is time for first period. The main halls are so cramped that it's difficult to pass through the crowd. It's hard to not feel a shoulder or a backpack invade my personal space and even harder to not trample over someone's feet. I can avoid going to my locker; I stopped using it due to the fact it frequently jammed. There wasn't enough space in there, anyway. I finally get to class and take my seat. As my teacher is talking, I can't help but be distracted by what's going on next door. Most of our walls either (a) don't reach the floor or (b) are paper-thin. Yet I am expected to focus.

A teacher of mine once said, "You know you have a friendship when you can have a conversation with disagreements and still go out for lunch." Now that I am 18, I am able to sit down at that table with you and join the conversation. Let's establish a friendship based on the well being of the students in this district. With all of our agreements and disagreements, let's at least be able to agree that the students deserve better. I deserved better, and I had to settle. Don't force other kids to do the same. Let's go out for lunch May 9.

Faith Madkins is a senior at McClellan High School.

Mollie Campbell

I am the proud mother of two, soon to be three, young children. My oldest is in pre-K at Forest Park Elementary. My younger two will follow their big sister to Forest Park, Pulaski Heights Middle School and eventually Central High. My family is committed to being in the Little Rock School District for the next 18 years. That is why this vote is so important to me.

Schools all over our district are seriously overdue for upgrades and improvements. The buildings are on average 53 to 68 years old and have gone without any major capital investments since 2000. Our kids deserve the best possible learning environment. They should not be in buildings with leaky roofs or cafeterias without air conditioning. Every student in the district deserves modern, clean, safe facilities.

This vote will invest millions back into our schools and will impact the entire district — every school and every student. Roof repairs, window replacements, new security systems, restroom renovations and heating and air conditioning replacements will improve the lives of every student, teacher and staff member in the district. The list of improvements to be made comes from a study conducted in 2014, and the funds generated will go directly toward these capital improvements ... no surprises.

Our kids deserve better. After talking with several people about this vote, I acknowledge that some would rather wait until a local school board has control of the money. I, too, look forward to the swift return of our local school board. On this issue however, how long should we ask our kids to wait and allow their education to suffer in the meantime? We cannot let perfection be the enemy of the good when we have a chance to improve all of our kids' classrooms and learning experiences immediately. By voting FOR this ballot measure on May 9, my daughter will enter kindergarten this fall in a school that was improved this summer.

Every day, as my 4-year-old walks into school, I expect her to do everything she can to maximize her learning experience. As her parent, I know it is my responsibility to do the same for her, and right now that means supporting this investment in her school and schools across the district. The time is NOW to invest in our kids and our community, so I look forward to voting FOR our kids on May 9.

Mollie Campbell is a Little Rock School District mom.

Bobby Roberts

In 2014, the Little Rock School District commissioned a facilities study that indicated that approximately $300 million in facilities upgrades and improvements were needed. In January 2015, the school board voted unanimously to approve a $375 million facilities plan.

At that same time, the Central Arkansas Library System had just opened a new library and revitalized our facilities throughout the region. These new facilities helped bring the joy of reading and learning to thousands of students. It was amazing to see the impact that a new library could have on a community by providing a place for people to read, gather, access the internet and learn. These libraries gave students the tools and resources they needed to study, learn and excel. Many of these fine new buildings were constructed when voters approved the refunding of existing bonds. This is exactly the same funding method that the LRSD is proposing to voters.

I saw firsthand what a difference investing in our libraries made in our city and in the lives of children. I know that investing in our schools would have an even greater impact. We need to give students the tools for success, and reinvesting in our aging, outdated academic facilities is the best way to do that. These old buildings do not do that, and we are hampering our students' ability to learn by denying them modern facilities.

If we vote now to extend our bonds, we will raise an additional $160 million to begin addressing the needs of our school facilities. Every school, and therefore every community, in the district will feel the investment of this money by the 2017-18 school year. This investment in our neighborhoods will save us huge dividends by lowering the operational costs of our schools and making them more energy efficient, with better lighting and renovated restrooms and roofs.

By providing them with new facilities, modern technology and a better learning environment, we will empower our students to succeed. By improving their schools, we can increase academic achievement while also providing them with a safer and healthier learning atmosphere. Join me in supporting our kids; join me by voting FOR on May 9.

Bobby Roberts is the former director of the Central Arkansas Library System.

Keith Jackson

As the founder of P.A.R.K., I understand the importance of investing in education. We see the impact that P.A.R.K's modern facility in Southwest Little Rock has on the success of our students. By supporting this vote, you are ensuring that every student in the district will be able to learn in a new and improved learning environment.

In Southwest Little Rock, this vote means that over $95 million will be invested into the community. At a cost of $55 million, a new high school off of Mabelvale Pike would be built beginning this summer and would serve hundreds of students. This school would open in the fall of 2019 and would be equipped with the newest classroom and athletic facilities. With 21st century sports facilities that would be available for community usage, this new high school would benefit everyone in the community.

McClellan High School would also receive a $40 million investment, completely revitalizing the school. Improvements like updated HVAC, roof and window repairs, classroom remodeling and technology updates would create energy savings and enhance the learning environment for our students. This repurposing of McClellan will change the lives of every student that will go through the school.

Improved schools throughout the district can only be a good thing for Little Rock and our community. A vote FOR on May 9 will be a major boost for Southwest Little Rock. With your support, we can give our kids the modern learning environment and facilities they deserve!

Keith Jackson is the founder of Positive Atmosphere Reaches Kids, a nonprofit based in Southwest Little Rock that provides afterschool and summer programming for youth.

Gary Smith

There have been no new major capital improvements in our schools since 2000. That means that a student graduating this year will have gone through his or her entire academic career in schools that are outdated and in dire need of improvement. By voting to extend the debt on our bonds for an additional 14 years, we will be able to invest $160 million into rebuilding and rehabilitating every school in our district — all without raising the tax rate.

On average, district elementary school buildings are 68 years old, middle school buildings are 69 years old and high school buildings are 53 years old. A successful election will allow the district to make much-needed improvements district-wide before the start of the 2017-18 school year, including lighting, heat and air conditioning repair and window and roof replacements. These improved facilities will not only support the increased academic achievement of our students by improving their learning environment, but will also create a return on investment by decreasing energy costs. These improvements were selected as priorities after holding 46 community forums.

I'm tired of Little Rock being a donut hole. I'm tired of being surrounded by other cities that are investing in their schools and making a difference in their students' lives. We have watched surrounding districts pass millage increases, build new schools and improve existing ones, and we have done nothing for nearly 20 years. We have a chance now to make a difference.

This choice should be an easy one. We cannot have a great city and a great community without a strong, viable school district. Students are going to go to school tomorrow in a school that desperately needs help. They are going to use outdated technology and go to class in buildings with leaky roofs. This is something we can change. We need to create a better atmosphere for our students, and this vote is the way to do that.

Gary Smith is the chairman of the Committee to Rebuild our Schools Now.



          How the 2017 Arkansas legislature made life worse for you   
But it wasn't as bad as it could've been at the Capitol.

Arkansas's legislators were locked and loaded when they arrived for the 91st General Assembly this year, determined to get more guns into public places and take away voting and abortion rights, their evergreen attacks.

Thanks to the legislature, concealed weapons soon may be carried just about everywhere except Razorback games and the University of Arkansas for Medical Sciences. Unemployment benefits were cut, whistleblowers were silenced and charter schools were given advantages over regular public schools. Other legislation was symbolic but ugly, such as an act authored by Rep. Brandt Smith (R-Jonesboro) that aims to stop Sharia, or Islamic ecclesiastical law, from taking over Arkansas's court system.

Some of the silliest bills went nowhere, such as efforts by Sen. Jason Rapert (R-Conway) to wipe Bill and Hillary Clinton's names off the Little Rock airport, to indefinitely delay implementing the voter-approved medical marijuana program and to call a convention of the states to amend the U.S. Constitution to ban same-sex marriage. Anti-immigrant legislation that would have penalized colleges and cities with so-called "sanctuary" policies withered in committee. Rep. Smith, the sponsor of the bill targeting universities, warned that rogue professors might hide undocumented immigrants in their offices and then dump their human waste on campus in the dark of night; surprisingly, this argument did not persuade his colleagues. Rep. Kim Hendren (R-Gravette) proposed banning cell phones from public schools; later, he filed a bill prohibiting teachers from using books authored by leftist historian Howard Zinn. Neither gained traction.

What was good? A little. Conservatives tried to circumscribe the medical marijuana amendment with bans on smoking and edible products, among other roadblocks, but the worst of the anti-pot legislation stalled. Evidently reassured by Governor Hutchinson's promises to make the private option more conservative (read: stingier) down the line, the annual appropriation for Medicaid passed without a major fight — a relief for the 300,000-plus Arkansans receiving health insurance through Obamacare. Pushed by Hutchinson, the ledge directed some of Arkansas's tobacco settlement proceeds to expand a waiver program for the developmentally disabled, opening the door to services for some 500 to 900 desperate families stranded for years on a waitlist. At long last, the state will stop its reprehensible practice of celebrating Robert E. Lee's birthday simultaneously with Martin Luther King Jr. Day, a symbolic but important step forward that was championed by the governor.

Here's our survey of the damage:

GUNS
In Glock we trust

The biggest gun-related news this session was the passage and signing of House Bill 1249, now Act 562, which creates a new "enhanced carry" permit that will allow gun owners who have undergone eight hours of additional training — including active shooter training, with a curriculum still to be worked out by the Arkansas State Police — to carry a concealed handgun in many places previously forbidden under the state's concealed carry law, including the state Capitol, public colleges and universities, bars, churches and courthouses. Concealed carry in prisons, courtrooms and K-12 schools is still forbidden, and private property owners, including bars, churches and private colleges, can still prohibit firearms if they choose.

Sponsored by Rep. Charlie Collins (R-Fayetteville), the bill was a far piece from where it started by the time it was signed. Originally, Collins' bill would have solely mandated that public universities and colleges allow faculty and staff to carry concealed handguns. It was an attempt to push back against the state's public colleges and universities, which have steadfastly rejected Collins' and his colleagues' attempts to institute "campus carry" in the past. Amendments to HB 1249 soon pushed it several clicks further toward the broad "guns everywhere" approach favored by the National Rifle Association, and far beyond a potential shooting iron in a well-trained professor's briefcase. Now, anyone with the enhanced permit will be able to carry on a college campus, including into sometimes-contentious student and faculty disciplinary hearings and raucous college dorms.

The passage of the bill spawned some last minute scrambling when the Southeastern Conference expressed concerns about fans coming to college football games carrying heat, resulting in Act 859, a cleanup effort that prohibits concealed carry in college athletic venues. Also exempted by Act 859 were daycares, UAMS and the Arkansas State Hospital, an inpatient facility for the mentally ill. The bill also allows private businesses and organizations to ban concealed carry without posting a sign to that effect. If a private business decides to ban concealed carry without posting a sign, anyone caught carrying a concealed weapon on the premises can be ejected or told to remove their gun if they want to come back. If the concealed carrier repeats the infraction, they can be charged with a crime. Even after the purported cleanup, that still leaves a lot of places open to concealed carry unless those places set a policy forbidding the practice, including most hospitals, mental health facilities and off-campus high school and middle school sporting events. At the signing ceremony for HB 1249, Chris Cox, executive director of the NRA's Institute for Legislative Action, said, "We believe that if you have a legal right to be somewhere, and you're a law-abiding person, you ought to have a legal right to defend yourself." For the NRA, that means the right to be armed everywhere, any time, as long as you don't have a criminal record. Notice Cox didn't say anything about pesky permits or training.

Speaking of law-abiding persons, also of concern when it comes to concealed carry is Act 486. Under the law, the Arkansas State Police is now prohibited from establishing or amending any administrative rule that would revoke or suspend a concealed carry permit unless the holder of the permit was found to be in violation of a criminal offense. While not penalizing a person if they haven't committed a crime sounds like a good idea, the problem is that people can and do go off the rails for a multitude of reasons, many of which have nothing to do with a violation of the criminal code. Before the passage of Act 486, the State Police had broad latitude to revoke or suspend concealed carry permits for a number of reasons, including serious alcohol and drug abuse, dangerous mental illness, or a mental health professional's determination that a permit holder might be a threat to himself, his family or the public. With the passage of Act 486, though, a concealed carry holder who suffers a complete mental breakdown to the point of visual hallucinations can keep on packing right until the moment he or she is admitted at the State Hospital (thanks Act 859!), even if the person's family or a doctor asks the State Police to pull their permit. Ditto with people suffering from substance abuse issues, elderly dementia patients and those who hint they might be capable of suicide or homicide. Under the law, a permit can still be revoked or suspended if the person is caught carrying into a prohibited place like a courtroom or jail, but as seen above, the list of places where handguns are prohibited is dwindling by the year. Otherwise, thanks to Act 486, we just have to wait until that person commits a crime. By then, it's too late.

In the What Could Have Been column, we have HB 1630, by Rep. Clarke Tucker (D-Little Rock), which would have created the misdemeanor offense of "negligently allowing access to a firearm by a child" if an owner failed to secure a loaded gun or left it in a place a child could easily access. Though the bill had exemptions for hunting, sport shooting and use of firearms on a farm and had a sliding scale of penalties, with incidents involving the death or serious injury of a child at the top of the list, it went nowhere.

EDUCATION

Traditional schools took licks, but the worst was kept at bay.

The single worst education bill passed in 2017 was probably Act 542, sponsored by Alan Clark (R-Lonsdale), which requires school districts to sell or lease "unused or underutilized" facilities to competitor charter schools. Charters already had right of first refusal in the event a district decides to sell a building — but after Act 542 goes into effect this summer, a charter can force a district to sell or lease a building, even if the district doesn't want to do so. If a different entity — a nonprofit, say, or a clinic or a business — wants to buy an unoccupied school building instead, that's too bad. Act 542 requires a district to hold on to unused buildings for two years, just in case a charter comes along and wants the facility for itself.

Clark pointed to a situation a few years ago in which the Helena-West Helena School District refused to sell a vacant elementary to KIPP Delta, a charter. But there are good reasons why a district wouldn't want to hand over an asset to a direct competitor: Charter networks tend to weaken districts by bleeding away higher-performing students and public money, and they often enjoy advantages their traditional public school counterparts do not. As some opponents of the bill pointed out, the new law is tantamount to forcing Walmart to sell a store to Target. That's why school superintendents across the state fought the bill and convinced no small number of Republicans to join Democrats in opposing it. In the end, though, it passed the House on a 53-32 vote. Republican legislators also rejected proposals by Democrats Sen. Joyce Elliott and Rep. Clarke Tucker — both from Little Rock, which is seeing unchecked charter growth at the expense of traditional public schools — to impose fairer rules on charters.

Thankfully, the legislature turned down an even worse proposal. HB 1222 by Rep. Jim Dotson (R-Bentonville) proposed a convoluted scheme to divert millions of dollars away from the public coffers (by means of a tax credit to wealthy donors) and toward private schools in the guise of "education savings accounts" to be used for student tuition. A school voucher plan in all but name, the bill would have been devastating to public education. Dotson eventually scaled back the legislation to a pilot program with a four-year sunset, allowing a Senate version of the bill to win passage in that chamber — but many Republicans remain fond of their local school districts, and it narrowly failed in the House.

Meanwhile, legislators expanded an existing voucher program, the Succeed Scholarship. Created in the 2015 session, it uses public tax dollars to pay private school tuition for a limited number of K-12 students with special needs. Parents are required to waive their child's civil rights protections under the federal Individuals with Disabilities Education Act. In the past, the scholarship was open only to kids with an Individualized Education Program, or IEP; now, foster children living in group homes will also be eligible, thanks to Act 894 by Rep. Kim Hammer (R-Benton). Act 327 by Rep. Carlton Wing (R-North Little Rock) will allow a nonaccredited private school to participate, as long as the school has applied for accreditation. And, the appropriation for the Succeed Scholarship rose from $800,000 to $1.3 million — an increase of 63 percent — potentially allowing as many as 200 students statewide to participate.

That bump is especially notable alongside the meager 1 percent increase in the state's overall K-12 education budget for the next two years — far less than the 2.5 percent boost recommended by legislative staff tasked with determining what constitutes "adequate" school funding. A bit more money will be directed to teacher pay and special education, and pre-kindergarten will see an overdue $3 million increase, so the money situation could be worse. Still, with state revenue squeezed hard by tax cuts, and private and charter schools knocking at the door, traditional public schools are clearly not the General Assembly's top priority.

On other fronts, school legislation was a mixed bag. Elliott's Act 1059, will limit the use of out-of-school suspensions and expulsions for students in grades K-5 — a much-needed reform — but her bid to end corporal punishment failed in committee. (Rural Arkansas still loves the paddle.) One of the better education bills to pass this session was Elliott's Act 1039 which gives teeth to a 2013 law (also by Elliott) requiring dyslexia screening and intervention. Its reporting requirements and enforcement mechanism hopefully will force districts to deliver better reading interventions to dyslexic students. A major accountability bill developed by the state Education Department, Act 930, will overhaul how schools are monitored by the state, though it's too soon to say how the changes will play out. Act 478 by Rep. Bruce Cozart (R-Hot Springs), will require high school students to pass a civics test before graduating; an attempt by Rep. John Walker (D-Little Rock) to impose the same requirement on legislators and state agency heads received a cold reception. A bill by Rep. Mark Lowery (R-Maumelle), now Act 910, will end September school elections and require them to be held concurrent with the November general or spring primary election date. That could spell trouble for future millage votes.

Finally, there's higher education: "Campus carry" dominated the news, but a major change in funding may be just as consequential. Act 148, which originated with the governor's office, creates a funding formula for colleges and universities that ties state money to metrics like graduation rate. HB 1518, now Act 563, a worthy bill by Rep. James Sturch (R-Batesville) requires the Arkansas Higher Education Coordinating Board to create an action plan for addressing sexual assault on college campuses.

Benjamin Hardy

TAXES

Some help for the working poor and lots of punting.

Give modest credit to Governor Hutchinson. In the 2013 and 2015 legislative sessions, Republican legislators pushed a massive cut on taxes on capital gains and reduced the income tax burden on all but the working poor. This session, Hutchinson provided some relief at the lower end of the tax bracket. Hutchinson pushed through a $50 million tax cut, directed at households with a taxable income of less than $21,000. The cut is misleading, though, as it targets taxable income, which is often far less than salary or adjusted gross income. In fact, Arkansas Advocates for Children & Families pointed out that 48 percent of the overall $50 million cut will go to taxpayers in the top 40 percent of earners, while only 5 percent will go to those making less than $18,000 per year.

Establishing a refundable state Earned Income Tax Credit, tied to the federal EITC, would have been considerably more beneficial to the lower 40 percent of Arkansas earners, who often have no income tax liability, but pay a large share of their income in sales tax. An EITC would have provided a more substantial boost to the working poor at less cost than Hutchinson's cut. Rep. Warwick Sabin (D-Little Rock) and Sen. Jake Files (R-Fort Smith) were behind the EITC proposal, which historically has bipartisan appeal, but they couldn't get support from Hutchinson or enough other legislators.

Hutchinson also supported legislation that exempted all military retirement pay and survivor benefits from state income taxes. The first $6,000 of military retirement pay had been exempt previously. Since most veterans aren't career soldiers and eligible for a pension, the exemption will leave out many veterans (again, an EITC would have been a better avenue). But few politicians on either side of the aisle were going to stand in the way of helping veterans — even though Hutchinson unconscionably larded the measure with unrelated tax hikes. The legislation offset the eventual $13.4 million cost of the exemption by raising the sales tax on candy and soda. Completely unrelated to veterans' retirement income, the bill provided a $6 million tax cut on soft drink syrup, which it paid for by taxing unemployment benefits and digital downloads. So, veterans with pensions got a bump and corporate interests got significant help, while folks downloading books and movies, as well as people in between jobs, got screwed.

In the "could have been worse" column, more credit for Hutchinson: He held at bay lawmakers from his party such as Sen. Bart Hester (R-Cave Springs) who wanted to cut $100 million or more in taxes — threatening essential state services in the process — by creating a commission to consider the future of tax policies in the state.

The commission will have to consider two issues the General Assembly punted on. A bill that would have required out-of-state online retailers to collect sales tax on purchases made by Arkansans stalled in the House, with several Republicans decrying the proposal as a tax increase even though Arkansans already are required to pay the tax by law (few do because it requires self-reporting.) Still, Amazon said it would voluntarily begin collecting sales tax on Arkansas customers beginning in March. Another bill that merely would have referred to voters a proposal to increase the tax on gas to pay for bonds for highway construction failed on similar anti-tax grounds.

Lindsey Millar

CRIMINAL JUSTICE

Atual reform

Act 423, "The Criminal Justice Efficiency and Safety Act," might be the most consequential piece of good legislation the General Assembly passed. It's a sprawling, omnibus law, with three primary components.

Most consequentially, it introduces swift and certain sanctioning, which means parolees and probationers who commit minor violations of the terms of their supervision will be sent for 45 to 90 days to Arkansas Community Correction facilities, where they will receive rehabilitative programming, instead of being sent to prison for significantly longer stints. Arkansas in recent years has had the fastest growing prison population in the country, fueled largely by parole violators returning to prison. Swift and certain sanctioning is expected to free up as many as 1,600 prison beds and save the state as much as $30-$40 million.

The law also seeks to divert people who commit nuisance offenses because they are high on drugs or having a mental health crisis in public from jail or prison. It establishes Crisis Stabilization Units, regional facilities where people in crisis could go to receive treatment for several days. The law mandates the creation of three such units, but $5 million earmarked in the state budget for the operation of the facilities, paired with significant additional federal money the state expects to draw from Medicaid, could allow for several more CSUs to open. The locations of the CSUs have not yet been selected, but Craighead, Pulaski and Sebastian counties are thought to be leading candidates. Finally, Act 423 also requires law enforcement officers to receive crisis intervention training to help them de-escalate interactions with people amid behavioral health episodes.

The law is the product of 18 months of study and presentations by the nonprofit Council of State Governments, which reported to a Legislative Criminal Justice Oversight Task Force that bill sponsor Sen. Jeremy Hutchinson (R-Little Rock) co-chaired. Hutchinson, co-sponsor Rep. Clarke Tucker (D-Little Rock) and CSG say the new law will save the state money, which can be reinvested in effective criminal justice policies. CSG's justice reinvestment program has successfully been implemented in states across the country.

Of course, whether it's successful here will depend on policymakers seeing the reforms through. One potential stumbling block: CSG recommended that the state hire 100 new parole and probation officers to better supervise the nearly 56,000 people on parole and probation. Current supervision officers handle on average 125 cases. Governor Hutchinson's budget didn't provide for funding to hire 100 new officers, though it did make temporary funding to Arkansas Community Correction permanent, which will at least allow the department to retain the 60 officers it had hired since 2015. That's not enough, Sen. Hutchinson (who is the governor's nephew) said. He hopes a future General Assembly will approve additional funding for more officers using some of the savings generated by Act 423.

A perennial stumbling block for any criminal justice reform is the inevitable violator who commits a serious crime. A significant portion of Arkansas's recent prison growth spike came because of punitive parole policies enacted in the wake of the 2013 murder of a teenager in Little Rock by a serial parole violator. It's natural to think that locking up people who commit crimes for long stretches reduces crime, but research shows it's just the opposite, Sen. Hutchinson said.

"I've had the luxury of studying this for years now. It's hard to wrap your brain around sometimes," Hutchinson said. "Longer sentences do not, in fact, result in lower crime rates. The longer [people are] incarcerated, the greater chance of recidivism they have."

Hutchinson chaired the Senate Judiciary Committee, and many of its members, chief among them Sen. Bryan King (R-Green Forest), were hostile to the idea of moving away from incarceration in certain situations. King introduced the tough-on-crime Senate Bill 177, which would have required anyone with three stints in prison to serve at least 80 percent of any subsequent sentence. Arkansas already has a two-strikes law: After someone commits a second serious violent or sexual crime, he's required to serve 100 percent of his sentence. So King's measure would have mostly targeted low-level property and drug crimes and at huge cost. According to an impact statement, it would have added 5,499 inmates at a cost of $121 million in 2026. The total 10-year cost to the state would have been $692 million, and that's not including the significant cost of building new prison housing. King let the bill die in the House Judiciary Committee after Governor Hutchinson forcefully spoke out against it.

Three other positive new laws: Act 566, sponsored by the odd couple Rep. John Walker (D-Little Rock) and Rep. Bob Ballinger (R-Berryville), has Arkansas opt out of a section in President Clinton's sweeping 1996 welfare reform law that prevents anyone who has been convicted of a felony drug offense from receiving Temporary Assistance for Needy Families benefits. Act 1012, from legislation sponsored by Tucker and Hutchinson, allows someone on probation or parole for an offense that did not involve the operation of a motor vehicle who has a suspended drivers license because of unpaid fines or fees to continue to drive to work or school. Act 539, sponsored by Sen. Missy Irvin (R-Mountain Home) and Rep. Rebecca Petty (R-Springdale), prevents minors from being sentenced to life without parole. Before they become eligible for parole, the new law requires minors sentenced to life terms to serve 20 years for nonhomicide offenses, 25 years for first-degree murder and 30 years for capital murder. Of course, the Parole Board could repeatedly deny parole requests and force someone sentenced to a life term as a minor to spend his life in prison.

The heartbreaker of the session in criminal justice was the failure of Democratic Sen. Joyce Elliott's proposal to require racial impact statements for new criminal justice legislation. The impact statements would have provided research on whether proposed legislation would have a disparate impact on minority groups. Similar bills failed in 2013 and 2015, and this one was substantially amended to merely provide the impact statements as an option, but it died on the House floor. It was another reminder that for many white people, there is no greater insult than suggesting that they or something they do might be racist, even if the bias was unintended. One opponent, Rep. Ballinger, said he did not believe in systemic racism.

Lindsey Millar

ABORTION

Risking women's health

Women and their bodies were subjected to serious new insults this year by Arkansas legislators practicing medicine without a license.

Among the most egregious laws was the so-called "dismemberment abortion" bill, now Act 45, whose chief sponsors were Rep. Andy Mayberry (R-Hensley) and Sen. David Sanders (R-Little Rock). The bill prohibits doctors from performing what doctors believe is the safest method of second trimester abortion: dilation and evacuation. The alternatives would be something akin to a Caesarean section, in which the belly is cut open to remove the fetus, or an induced abortion, which requires the woman to go into labor to expel a fetus killed by an injection of salt water, urea or potassium chloride into the amniotic sac. Those procedures are what doctors call "high morbidity" — meaning they have a high risk of making patients sick.

Dilation and evacuation is recommended by the World Health Organization, the American College of Obstetrics and Gynecology and the American Medical Association. The difference between those organizations and the Arkansas legislature is that one group does not believe women should receive the best health care possible.

But Mayberry and Sanders and their co-sponsors think D&E, which uses a vacuum, is tantamount to butchery. But hysterectomy and induction abortions accomplish the same end as a D&E and are far less safe.

There is no exception for incest or rape in the law. And, like previous laws passed by legislators who think their particular religious beliefs give them the right to control women, the law particularly harms women who can't afford to travel to a more broad-minded jurisdiction to exercise a legal right.

Another evil of the law is that it allows a spouse, parent or guardian to bring a civil suit against the abortion provider if the woman has "received or attempted to receive" dilation and evacuation. That means, according to abortion rights activists and Mayberry himself, a husband can stop an abortion. He may have committed rape. A parent may have committed incest. Doesn't matter.

Rep. Charlie Collins (R-Fayetteville) and Sen. Missy Irvin (R-Mountain View) brought us the bill that became Act 733, the so-called "sex-selection abortion ban." Despite the fact that there is zero evidence that Arkansas women are dashing into abortion clinics because they've determined the sex of their fetus and don't like it, the bill has the potential to create an huge burden on the doctor provider.

Say a woman has had prenatal tests to see if her fetus has a genetic disorder. She learns there is a disorder and, by the way, the sex of the fetus. Her doctor must ask if she knows the gender of the fetus. If she answers that she does, the abortion must be delayed, because this new state law requires the doctor to "request the medical records of the pregnant woman relating directly to the entire pregnancy history of the woman." No abortion may be performed until every chart for every pregnancy generated by the woman's ob-gyn (or ob-gyns) and staffs and hospitals, every record generated during every trip to the ER she may have had to make, is supplied and reviewed by the abortion provider. Not only could that take a lot of time and generate a mountain of paperwork — what if the woman already had five children? — but it would also notify, perhaps against the woman's will, her doctors and their staffs that she is seeking to obtain an abortion.

The bill does not state what information in those records would suggest that the woman was hell-bent on not having another boy or girl.

"Why are physicians and the clinic made to be an investigative party into a woman's motives to have an abortion?" asked a spokesman for Little Rock Family Planning, the state's only clinic that offers abortion up to 21 weeks.

Rep. Robin Lundstrum (R-Elm Springs) and Sen. Scott Flippo (R-Bull Shoals), like Mayberry and Sanders, introduced what's called a model TRAP law (targeted regulation of abortion providers) meant to end abortion by imposing stricter inspection regulations on clinics. The bill allows the state Department of Health to make yearly trips to inspect clinic records and "a representative sample of procedures"; to regulate all aspects of the clinic "without limitation," and to collect an annual fee of $500.

While purporting to be a bill to protect women's health, the new law, Act 383, is designed to let the state shut down a clinic for facilities violations not spelled out in the legislation. It's not clear what violation would close the clinic. Towel on the floor? Out of paper towels? Scoop left in the break room freezer's icemaker?

As it happens, Little Rock Family Planning is inspected frequently, more than the once every year that the law already called for. The health department inspected the clinic four times in 2016, citing such things as discolored ceiling tiles and a chair with rips. The clinic's spokesman said some inspections are instigated by complaints from the anti-abortion protesters that picket outside.

The vague language of Act 383 "has potential for abuse. We don't know if we would be singled out and treated differently, if our license could be suspended for even minor paperwork violations," the spokesman said.

— Leslie Newell Peacock

TRANSPARENCY

The public's right to know took one step forward, two steps back.

Arkansas's robust Freedom of Information Act came under assault in 2017 as never before, with legislators proposing at least a dozen new exemptions to the open records law. Thanks to SB 131, now Act 474, by Sen. Gary Stubblefield (R-Branch), security plans of the State Capitol Police are no longer disclosable to the public; Stubblefield's reasoning was that someone seeking to do violence at the Capitol might request such plans, but the law is written so broadly that virtually any record of the Capitol police could fall under the new exemption. Stubblefield's SB 12 (Act 541) created a similar exemption for schools, including colleges and universities. HB 1236, now Act 531, by Rep. Jimmy Gazaway (R-Paragould), prevents the disclosure of a body-cam or dash-cam recording of the death of a law enforcement officer.

Thankfully, though, many anti-FOIA bills failed. The most significant was SB 373, by Sen. Bart Hester (R-Cave Springs), which proposed exempting attorney-client communications and work product from the FOIA if the client is a public entity. The force behind the bill was the University of Arkansas. The problem with this idea — aside from the fact that attorney-client communications can already be shielded on a case-by-case basis, by order of a judge — is that a public entity could declare almost any record exempt simply by emailing that record to its attorney. Had it passed, this loophole could have swallowed the entire FOIA.

On the bright side, Rep. Jana Della Rosa (R-Rogers) managed to pass HB 1427, now Act 318, to require candidates to file their monthly finance reports electronically, rather than on paper. HB 1010, now Act 616, by Rep. Warwick Sabin (D-Little Rock) extends the same requirement to political action committees and other groups. This matters because a searchable electronic database will make it much easier for the public to track contributions made to candidates and PACs, as well as their expenditures.

However, the legislature quashed an effort to shine a light on the darkest regions of campaign finance when it rejected HB 1005, by Rep. Clarke Tucker (D-Little Rock). The bill would have required disclosure of "electioneering" spending, meaning advertisements by independent organizations, nominally unaffiliated with any candidate, that dodge ethics laws by scrupulously avoiding the use of phrasings like "vote for" or "vote against." A growing number of states recognize that such ads — which have proliferated tremendously in recent years and comprise hundreds of millions of dollars in spending nationwide — are de facto campaign commercials and require them to be reported as such. Not Arkansas.

Benjamin Hardy

ANTI-LGBT

Threats stalled.

The legislature still shows animus toward people who don't fit its definition of normal, but Arkansans lucked out when three anti-LGBT bills failed. Two so-called "bathroom bills" that targeted transgender children and adults and another that would have let doctors refuse to perform a procedure if it offended their "deeply held beliefs" did not make it into law.

But the legislature also blocked a bill that would have corrected an injustice. SB 580, by Sen. Joyce Elliott (D-Little Rock), would have provided for the automatic listing of both parents' names on the birth certificates of children of married same-sex couples, an important factor in establishing inheritance and other matters. In a marriage between a man and a woman, the names of both parents are listed on a child's birth certificate, even in cases of surrogacy or artificial insemination. Arkansas is the only state that treats children of same-sex parents differently in this regard, seemingly in violation of the U.S. Supreme Court's 2015 ruling that struck down bans on gay marriage nationwide. Elliott's bill would have fixed the problem, but when SB 580 came before the Senate Judiciary Committee, vice-chair Sen. Linda Collins-Smith (R-Pocahontas) said same-sex parents could make a will if they wanted to ensure their kids get an inheritance.

Besides the children of same-sex couples, Collins-Smith doesn't much like transgender people, either. She introduced SB 774 to require that people had to use public bathroom or changing facilities that corresponded with the sex as listed on their birth certificates, and that the governing body of the public entity had to make sure the law was enforced. Little Rock Convention and Visitors Bureau director Gretchen Hall and Verizon Arena General Manager Michael Marion told Collins-Smith in a hearing on the bill said they could not see how it would be possible to know what was on the birth certificate on the thousands of people who might answer the call of nature at an event. "It's your job to find a way," Collins-Smith snarled. Collins-Smith pulled down the bill when she realized it was not going to pass.

The House passed a bill introduced by Rep. Bob Ballinger (R-Berryville), who also had his mind on bathroom use, to expand the state's indecent exposure law. State law already says it is a crime to expose one's genitalia with intent to gratify sexual desire; Ballinger's bill would have made it a crime simply to expose genitalia in front of a person of the opposite sex. (Maybe it's common practice to inspect genitalia in bathrooms up in Berryville.) Though the House vote for the bill was 65 to 3, the bill went down the Senate Judiciary Committee drain, as Collins-Smith's did.

Governor Hutchinson, who did not want Arkansas to suffer economically as North Carolina did when it passed its "bathroom bill" (since partially repealed), was relieved.

Another ugly bill was introduced by Rep. Brandt Smith (R-Jonesboro): the Health Care Freedom of Conscience Act, which would have allowed doctors to refuse to administer health care services that offended their "deeply held beliefs." Smith had in mind both reproductive rights and transgender reassignment surgery. There was no support for the bill from medical professionals, and state Surgeon General Dr. Gregory Bledsoe spoke against it, saying, "If you're a member of any sort of minority group ... these sorts of bills send a message that threatens you."

Leslie Newell Peacock

AVERAGE ARKANSANS 

Workers, consumers and other enemies of the state got a raw deal.

Governor Hutchinson deserves some recognition for passing a modest income tax cut for working people this session, even if it wasn't quite the boost for the poor that he claimed (see Taxes, page 15). But in almost every other way, the average Arkansan got screwed by the 2017 session.

Start with Act 986, by Rep. Laurie Rushing (R-Hot Springs), which will outlaw private class-action lawsuits under the Deceptive Trade Practices Act — a cornerstone of consumer protection law. Such suits are a powerful deterrent against businesses that intentionally scam customers in various small ways, such as false advertising or misleading promotional offers. Preventing consumers from bringing claims as a class gives the unscrupulous a freer hand to prey on the unsuspecting.

Act 606, by Rep. DeAnn Vaught (R-Horatio), provides a boon to corporations by allowing an employer to sue a worker who records a video or takes photos in the workplace "and uses the recording in a manner that damages the employer." In other words, it will stop whistleblowers from documenting unethical or illegal practices, such as animal abuse at factory farms. Animal rights organizations refer to it as an "ag-gag" bill.

Maybe the biggest prize for big business, though, was the "tort reform" measure that was referred to the 2018 ballot, Senate Joint Resolution 8. Sponsored by Sen. Missy Irvin (R-Mountain Home), it proposes a new amendment to the state constitution that would place ceilings on the noneconomic and punitive damages that may be awarded to a claimant in a civil suit. Attorney contingency fees would also be capped, at one-third of the net recovery. In short, this would sharply limit the ability of someone who was grievously harmed by an act of medical malpractice to seek compensation in court. SJR 8 sparked a bruising fight in the legislature, with a few Republicans breaking ranks to speak forcefully against abridging the right to a trial by jury. But business interests — especially nursing homes — have been pushing tort reform for years, and the measure proved unstoppable. Unless Arkansas voters reject it in 2018, that is.

Speaking of abridged rights, the legislature also referred a proposed amendment that would enshrine a voter ID requirement in the Arkansas Constitution. The hard truth is that House Joint Resolution 1016, by Rep. Robin Lundstrum (R-Elm Springs), will likely pass in 2018 given the state's electoral trends. Never mind that proponents of voter ID can't cite any documented instances of voter impersonation in Arkansas, and never mind the evidence that such measures elsewhere have resulted in voters being disenfranchised — voter ID has become gospel to Republicans, aided by President Trump's falsehoods about rampant fraud in the 2016 election. Redundantly enough, the legislature also passed a voter ID bill in addition to the referred amendment, Act 633 by Rep. Mark Lowery (R-Maumelle).

Arkansas's status as the worst state in the nation for renters went unchallenged. A bill by Sen. Blake Johnson (R-Corning), now Act 159, softened but preserved the state's unconscionable, one-of-a-kind criminal eviction statute, which courts in several counties have deemed unconstitutional. Thanks to the lobbying efforts of the Arkansas Realtors Association, Arkansas also remains the only state in which there is no minimum habitability standard for rental property. HB 1166, by Hot Springs Republican Rushing, purported to address that deficiency, but the bill's proposed standards were pitifully weak — limited to electricity, water, sewer and a roof — and it may have limited renters' meager rights in other ways, so it's best it failed.

Legislators' sympathy for landlords didn't translate to protecting small property owners railroaded by the oil industry. House Bill 2086, an effort by Rep. Warwick Sabin (D-Little Rock) to more carefully examine the use of eminent domain by pipeline companies, was drafted in response to the construction of the Diamond Pipeline, which will carry crude oil across the length of Arkansas from Oklahoma to Memphis. It failed to get out of committee.

Currently, unemployment benefits in Arkansas cover workers for a maximum of 20 weeks, which is a shorter span than any surrounding state except Missouri (also 20 weeks). Act 734 from Rep. Lundstrum will soon reduce that coverage time to 16 weeks ... and reduce weekly benefits checks paid to laid-off workers. This is despite the state's unemployment trust fund having amply recovered from the recession (it now contains around $500 million) and unemployment levels at record lows. So why trim benefits now? Simple: Employers want more money for themselves.

There was at least one good piece of consumer legislation, though, sponsored by none other than Sen. Jason Rapert (R-Conway). Act 944 aims to close a loophole exploited by payday lenders, which were driven out of Arkansas some years ago by a ban on high-interest loans but recently have been creeping back into the state by charging astronomical "fees" in place of interest.

And some bad measures failed, the most obnoxious probably being HB 1035 by Rep. Mary Bentley (R-Perryville). The bill would have prohibited SNAP recipients from using food stamps to purchase items the state Health Department deems unhealthy, such as soda; it stalled in the face of opposition from grocery stores and others. House Bill 1825 by Rep. John Payton (R-Wilburn), which went nowhere, would have seized lottery winnings from citizens who have received public assistance from the Arkansas Department of Human Services. And, efforts to chip away at workers compensation failed this time around. Got to leave something for 2019.

Benjamin Hardy



          8 Best Linux Distros For Programming And Developers (2017 Edition)   

Linux-based operating systems are often used by developers to get their work done and create something new. Their major concerns while choosing a Linux distro for programming are compatibility, power, stability, and flexibility. Distros like Ubuntu and Debian have managed to establish themselves as the top picks. Some of the other great choices are openSUSE, Arch Linux, etc.

Read more


          Arduino lesson – PWM Control LED Brightness   
Introduction In this lesson, we will show how to gradually change the luminance of an LED through programming. Since the pulsing light looks like breathing, we give it a magical name – breathing LED. We’ll accomplish this effect with pulse width modulation (PWM). Preparations Hardware Osoyoo UNO Boars (Fully compatible with Arduino UNO rev.3) x 1 ...Read the Rest
          B2B System Maintenance and Developer - Brightenview Development - Saskatchewan   
Solid understanding of web development and design concepts, programming, web store creation, e-business strategies and internet marketplace....
From Brightenview Development - Thu, 01 Jun 2017 15:17:13 GMT - View all Saskatchewan jobs
          Human Rights in the World Health Organization: Views of the Director-General Candidates   

Benjamin Mason Meier

Before the election of the Director-General of WHO, and given the importance of human rights to global health governance through WHO, Health and Human Rights asked the three final candidates for their views on human rights, WHO’s human rights mandate, and the role of human rights in WHO programming. These questions were developed by the [...]

          PHP Developer - TORRA INTERNATIONAL - Malappuram, Kerala   
Maintain and manage general network setup. Configure and maintain Apache and PHP Programming atmosphere.... ₹15,000 a month
From Indeed - Tue, 04 Apr 2017 03:57:40 GMT - View all Malappuram, Kerala jobs
          Mastering PHP 7   

Effective, readable, and robust codes in PHP About This Book Leverage the newest tools available in PHP 7 to build scalable applications Embrace serverless architecture and the reactive programming paradigm, which are the latest additions to the PHP ecosystem Explore dependency injection and implement design patterns to write elegant code Who This Book Is For This book is for intermediate level developers who want to become a master of PHP. Basic knowledge of PHP is required across areas such as basic syntax, types, variables, constants, expressions, operators, control structures, and functions. What You Will Learn Grasp the current state of PHP language and the PHP standards Effectively implement logging and error handling during development Build services through SOAP and REST and Apache Trift Get to know the benefits of serverless architecture Understand the basic principles of reactive programming to write asynchronous code Practically implement several important design patterns Write efficient code by executing dependency injection See the working of all magic methods Handle the command-line area tools and processes Control the development process with proper debugging and profiling In Detail PHP is a server-side scripting language that is widely used for web development. With this book, you will get a deep understanding of the advanced programming concepts in PHP and how to apply it practically The book starts by unveiling the new features of PHP 7 and walks you through several important standards set by PHP Framework Interop Group (PHP-FIG). You’ll see, in detail, the working of all magic methods, and the importance of effective PHP OOP concepts, which will enable you to write effective PHP code. You will find out how to implement design patterns and resolve dependencies to make your code base more elegant and readable. You will also build web services alongside microservices architecture, interact with databases, and work around third-party packages to enrich applications. This book delves into the details of PHP performance optimization. You will learn about serverless architecture and the reactive programming paradigm that found its way in the PHP ecosystem. The book also explores the best ways of testing your code, debugging, tracing, profiling, and deploying your PHP application. By the end of the book, you will be able to create readable, reliable, and robust applications in PHP to meet modern day requirements in the software industry. Style and approach This is a comprehensive, step-by-step practical guide to developing scalable applications using PHP 7.1 Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com . If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.


          Ruby Alternatives in 2017   
A recent overview of Ruby (our favorite programming language) and other modern programming languages with data from Google Trends, StackOverflow Trends and other sources. Plus a Ruby community meetup style in Minsk.
          Why Apple & Twitter Are Turning To Propagate For Original Content   

As Apple and Twitter are making their first forays into television programming, they are turning to one company, Propagate Content.

The post Why Apple & Twitter Are Turning To Propagate For Original Content appeared first on Social Media Week.


          RESEARCH ASSOCIATE   

Department: Psychiatry

Salary: $40,805.00 to Commensurate

Advertising Ends On: 07/13/2017

Job Duties:

BASIC FUNCTION AND RESPONSIBLITY



Primary duties include, but are not limited to supporting the development and administration of educational projects based on the model of Screening, Brief Intervention, and Referral to Treatment for substance use disorders supported by a federal grant to the Department of Psychiatry.



 



CHARACTERISTIC DUTIES AND RESPONSIBLITIES




  • Provide support to project faculty and staff in the development of curricular programming for medical students.

  • Direct and coordinate project activities, meetings, and communications, including meeting minutes.

  • Collect and maintain project information for the preparation of scheduled reports required by the funding agency.  

  • Assist in developing, preparing, and monitoring program budgets, processes, data collection, and summary of program evaluation and results.

  • Coordinate data collection and analysis with staff from the Iowa Consortium on Substance Abuse.   

  • Serve as program liaison with faculty, staff, and students, private and public agencies.

  • Contribute to written reports for publication and dissemination. 

Applicant Credentials are Subject to Verification
Background checks(criminal history, child/dependent adult sexual abuse) will be conducted on final candidates for all positions in UI Hospitals and Clinics. Background checks may also be conducted for other positions.


IOWA CITY, IA 52240
          RESEARCH SUPPORT SPECIALIST(ONRS GRANT DEVELOPER)   

Department: Nursing Administration & General

Salary: $40,805.00 - $54,331.00

Advertising Ends On: 07/12/2017

Job Duties:

About The University of Iowa College of Nursing:



As a leader in nursing education, research, and practice innovations, the UI College of Nursing has received national recognition by U.S. News & World Report ranking several UI College of Nursing graduate programs in the top 15 in the nation in comparison to all public and private schools. External funding is robust, and in 2015, The College of Nursing ranked 20th in the nation in NIH funding.



The UI College of Nursing (CON) is committed to promoting diversity and inclusion in achieving our education, research, service and practice missions. The College of Nursing’s commitment to diversity is a shared value as demonstrated through our Pillars of Diversity.



Position Summary



The Grant Developer is responsible to coordinate the preparation and submission of grant proposals for the Office of Nursing Research and Scholarship (ONRS), College of Nursing, and provide operational/administrative effort in support of research spaces and research programming activities of the ONRS. Characteristic responsibilities include:



College Grant Responsibilities



Coordinate preparation and submission of grant proposals from the CON:




  • Collect and maintain files on required grant forms and proposal components;

  • Maintain and update ‘boilerplate’ information for applications;

  • Locate sponsor guidelines for proposal submissions and create, distribute and update proposal templates to assist with grant writing and biosketch creation;

  • Draft grant budgets in partnership with the ONRS Budget Specialist;

  • Liaise with external funding agencies when necessary to ensure that final proposal submissions are compliant with sponsor’s guidelines.



Provide CON information to other departments for interdepartmental grants applications.



Assist faculty and students with preparation and submission of institutional and individual research fellowship applications. 



Operational/Administrative Support of Research



Oversee and monitor ONRS operational accounts, including reconciling accounts each month, analyzing, monitoring and reporting financial data as needed and initiating and/or approving financial transactions.



Provide support for ONRS programming activities such as grant writing workshops and research forums, Young Scientist Program, collegiate Scholarly Interest Groups, and Junior Science Symposium.



Organize collegiate presence at Midwest Nursing Research Society (MNRS) annual meeting, staff the College of Nursing exhibit booth during conference, and coordinate student transportation and travel arrangements to the conference.



Facilitate the Graduate Research Assistant application and assignment process.



Maintain/support research space including but not limited to ensuring inventory lists of equipment are updated and adhere to appropriate data storage, exposure control and hazardous waste disposal procedures.



 



Please assure that your application/resume and/or cover letter illustrates the work experience, knowledge, skills and abilities you have that meet each of the required qualifications.



References:  Five professional references will be requested and required at a later step in the recruitment process. 

Applicant Credentials are Subject to Verification
Background checks(criminal history, child/dependent adult sexual abuse) will be conducted on final candidates for all positions in UI Hospitals and Clinics. Background checks may also be conducted for other positions.


IOWA CITY, IA 52240
          Lisa Renee Update - June 27, 2017   

http://energeticsynthesis.com

http://goldenageofgaia.com/wp-content/uploads/2010/10/lisa.jpgThe intensity continues as we move forward into July, we are continuing to be repositioned and shifted so that our energy bodies and our consciousness is congruently aligned with the new timeline architecture, as well as with the new energy foundation. As we continually undergo micro-adjustments in just about every area of our inner person and outward lifestyle, we are witnessing more of the mental patterns and archetypes from our past lives. As cellular memories are surfacing, they can reveal themselves as powerful and intense emotions, images or sensations that arise from within suddenly, as feeling associations are being reconnected.

These cellular memories are from both the ancient human galactic histories, other lifetimes as well as patterns we may have lived out in our current lifetime that may have contributed to fixed patterns of behavior. Many unresolved trauma patterns continue to cross over into multiple stations of identity, these are generally deep patterns of emotional trauma or negative behaviors that surface so that we may resolve them. They may be stemming from our multiple lifetimes, and the many human incarnation experiences where those same patterns were repeated many times without finding energetic balance or conflict resolution. The collective consciousness patterns which have defined who we are in order to accept the belief systems that have been imposed upon us, have been deeply disturbing to our core spiritual being. It is reflected to us daily throughout the macrocosm how isolated and divided we feel as a species, that the human race has evolved completely and utterly alone on this rock, disconnected and without contact from other species, as well as not knowing the existence of our spiritual families. As a species we have been handed many false concepts and negative archetypes that we have believed to be true about ourselves that define our sense of self in our human identity.


As a result, many people on the earth have been negatively conditioned to feel deeply alone, feeling unwanted, feeling they do not belong, feeling burdened by uncertainty and insecurity and believing that there is something wrong with them. When we feel deeply disconnected and alone, all kinds of disempowering thoughts and painful feelings can show up in our lives. When we can shift our awareness from purely focusing on ourselves and looking to the larger picture, it may occur to us that we are not alone, and that this thought form has only surfaced for us to see. An incredible amount of people, nearly all people have directly experienced these exact same thoughts, also experiencing these exact same painful feelings of isolation and disconnection from others. How many people on this earth are feeling this way right now?

When we realize that the pain of disconnection and isolation is the misery within human existence that stems from the negative mind control inflicted upon us by the NAA, we can begin to realize that we are no less than anyone else on this planet. Feeling deep grief, experiencing great loss and sorrow, the state of suffering, this is intrinsic to the general human experience in the current reality of which we all share and are a part. When we can actually see and feel into the collective consciousness that holds this overall collective mindset of disconnection, we can know that we really are not our thoughts and feelings. Did you choose these certain thoughts that surface into your mind? When these negative thoughts pop up in your mind without warning, suddenly surfacing from out of nowhere, observe them and look deeper. You will notice that some of these thoughts and feelings trigger you when they surface while others do not, there are thoughts that show up and they disappear just as quickly. All thoughts and feelings fade away from memory over time, whether you want them to or not. The mind control programming on this earth teaches us that we are supposed to be the content of all of our thoughts and feelings, and when these random thoughts suddenly show up, that they actually belong to us and constitute an essential part of our human identity.

Thus, all of these patterns are being refined during this time to give us the opportunity to see what we need to change or heal inside ourselves that we inherited from the collective consciousness mind control. This is a time where we must learn to create our new reality from an entirely new palette of color, creating new thoughtforms about ourselves, feeling deeply into the new emotional spectrums that ignite cross collaboration, co-creation and manifestation. The infusion of these new color frequencies are from the unity code harmonics, the trinity wave formats that create a base for the new energy platform, and this architecture is available to us now to help us build something entirely different.

As you study these old and painful patterns from the past you will begin to see them embedded as distortions that have great influence upon human consciousness, the 3D belief systems that have profoundly impacted the way human beings function in the world at so many different levels. The mental games and reptilian mind control programs that are running covertly within our unconscious self, those larger behavioral patterns that are set up by the death culture that has been accepted by mass society. All of the subterranean distortions of the upside down world are coming into blaring review for us to more deeply analyze in order to comprehend what is behind it and how it has influenced our lives.  We have to see who and what is running a mental racket into the mental body of our unconscious and conscious mind, in order to become free of its negative triggers. A racket is a corrupt mental program running in our conscious or unconscious self that justifies itself into being, to protect the psyche from discovering its deepest and darkest fears. When the unconscious mind is running rackets it is very tricky and manipulative, trying to cover up the truth in order to continue to feed the ego programs for an emotional payoff. However, we are being pushed to clearly see these mental rackets running within our psyche, as the new energy foundation will not tolerate or support them. Running mental rackets is the antithesis to embodying personal integrity and authenticity. In order to be congruent with the core essence and the nature of our true self, we have to see the rackets that are bargaining with our ego in order to receive a mental or emotional payoff. Then take steps to remove faulty thinking and clear these mental rackets from taking control over our emotional state that influence the spiritual house of our inner being. When we are running mental rackets, we become the cause of our own mental and emotional suffering. When we can recognize that we are contributing to our own suffering by running negative mental rackets we can choose in every moment to give it up instantly.

Suffering is generated from focusing on what we want something to be, seeing the difference between what we want and what is actually the reality in this moment. The expectations of wants, needs and desires put projections onto something or someone that you want to be different from what they actually are, and this generates pain. When we want to force change upon another who is not living up to our expectations or desires, we may be feeding into blockages that make the situation of our own suffering become even worse. When we project our desires and needs onto others, when those expectations are not being met then people feel deeply hurt. And yet this hurt was produced from one’s own internal suffering by placing expectations upon another to relieve it, instead of finding deeper acceptance that allows each person to be who they are in this moment. When we find the generosity to hold total unconditional acceptance and love for others, we naturally find the same unconditional love and acceptance for ourselves.

If we want to be emotionally freed from feeling hurt and abandoned by other people, we must give up all expectations we have of other people, and find acceptance for them and the situation we may find ourselves in the moment.

Are you running mental rackets that are making you suffer? Mental rackets are fixed ways of thinking, being and behaviors that you refuse to change even if they are unhealthy or destructive to you and others. Fixed ways of being can be a mental program playing out certain archetypes or negative patterns, such as feeling victimized by something and looping into the victim-victimizer thoughts that generate repeated grievances and recurring complaints. If we have the same pattern of behaviors that generates recurring complaints about something or someone, then we have to take responsibility to change that mental pattern in order to begin to change the results that we make in our lives. Many people that constantly complain about the same issues and constantly feel hurt and betrayed by others, may not realize that deeply hidden in the unconscious mind, is a mental program running for an emotional payoff.  There is a payoff for every emotionally driven behavior and thought, whether positive or negative, that can be used to manipulate types of responses that you want to get out of other people. We can choose to let them go once we have honestly identified the negative emotions that are repeating patterns, and then digging deeper for the emotional payoff that is received from that behavior.

When we are not self-aware and we continually feed into the same negative behaviors without making an effort to change them, we are continuing to feed into duplicity at the expense of being totally honest with others, with upfront and open communication. Sometimes these negative behaviors happen in our more intimate and emotionally connected relationships. Many people may not be aware they are emotionally duplicitous with others, and that is a seed of deceit that will generate a return of more of the same.  

To go deeper and commit to let go of running mental rackets in order to receive an emotional payoff from them, we can spend some time to untie the knot between the negative behavior and the emotional payoff habit. Spend some time alone honestly assessing the negative patterns you may have running mental rackets that are tied to emotional payoffs. What’s important to recognize is that undesirable or negative behaviors are often associated with a mixture of wanted and unwanted consequences. One of the most important payoffs that is often associated with undesirable behavior is the reduction of anxiety and tension. There are many different types of undesirable and negative behavior that are used as coping mechanisms, that actually help people temporarily reduce their feelings of mental or emotional anxiety.

Once you have more clarity on the deeper reasons why this undesirable pattern has emerged, then find the vulnerability to share honestly with that person when you have noticed this dynamic occurs in that relationship. First, share the negative thought and behavior that has become a habit, once you have identified this happens between you and another person. Allow yourself to be vulnerable and reveal to this person the emotional payoff that you receive for using this negative behavior between you. Then commit to this person and yourself that you will not run this negative behavior and emotional behavior racket anymore to the best of your ability. Then declare to the person what is the most essential parts of your relationship that you value, as well as discovering the ways to build deeper trust together.

This is a time of Reality Check so that we can see what damage has been done that has left coping mechanisms and mental rackets, taking stock of what we have left to mentally and emotionally process, so we can live and speak in the deepest truth and integrity that we are capable of. Blind spots in our awareness or the perception that we hold of others that keep us in denial and living inside the deceptive psychological defense programs, or running mental rackets cannot continue. We are being rid of layers of drama, trauma and defense mechanisms that we have been operating unconsciously and consciously as the result of being a 3D human. Many of us on the ascension path may find ourselves deeply enmeshed in clearing these emotional and archetypal patterns now. It may show up as a part of healing the larger macrocosm mental rackets or healing something in your personal life, however the process of revelation is the same. All of humanity is subject to running these mental rackets and programs. This process can be painful as it requires that you give it all up at the Altar of inner spirit, nothing is held back, nothing is sugar coated, nothing is veiled from your ability to see or live by the truth as you know it. All we need to do is drop any resistance and let the circumstance self-correct as we participate by compassionately witnessing the pattern as it is being shifted or completely dissolved and removed. It is also dissolving the membranes that create energetic walls of separation that exist inside of us, so that we can be more whole within and therefore also be more whole in our interactions with others.  This can be an intense time of spiritual awakening and expansion, so taking the necessary time out and being gentle and forgiving in these circumstances, is the practice of building energetic self-mastery.

          R. v. A.B., 2017 ONCJ 419 (CanLII)   
programming — predicate offence — pattern — behaviour — sentence
          Books – That Is Exactly How They Work   
This image was recently making the rounds - I saw it on BoingBoing and really like it: For a completely different take on how books work, or rather, for an informed academic/programming look at how they will work as ebooks evolve, read Eric Hellman's post on The Object-Oriented Book. Incidentally, Eric's post came on the […]
          Walton Arts Center 2017-18 season features Taj Mahal, David Sedaris, Bela Fleck   

The Walton Arts Center announced the programming for its 2017-18 season earlier this week. The WAC Broadway Series features productions of Rodgers & Hammerstein's “The King and I,” Oct. 3-8; Irving Berlin's “White Christmas,” Nov. 7-12; Gary Barlow and Eliot Kennedy’s “Finding Neverland,” Dec. 19-23; John Kander and Fred Ebbs’ “Cabaret,” Jan. 19 21; George and Ira Gershwin’s “An American in Paris,” Feb. 6-11; Jonathan Larson’s “Rent,” March 2-4; Douglas McGrath’s “Beautiful: The Carole King Musical,” April 24-29; and Rodgers & Hammerstein’s “The Sound of Music,” May 15-20.

The WAC’s 10x10 Arts Series features Ballet Arkansas’s “Emergence,” Oct. 13; contemporary dance ensemble Cas Public’s “Symphonie Dramatique,” Oct. 26; a cappella ensemble Voces8, Dec. 3; a concert from Béla Fleck and Brooklyn Rider, Jan. 17; The Triplets of Belleville Cine-Concert, Feb. 1; the Pasadena Roof Orchestra, Feb. 24; Aquila Theatre Co.’s production of “Sense and Sensibility,” March 8; the Dublin Guitar Quartet, March 9; “Flow,” a “yoga-inspired” piano concert from Ravé Mehta, May 24; and the Artosphere Festival Orchestra 10x10 Concert, June 19.

The comedy series, LOL @ WAC, includes performances from David Sedaris, Oct. 24, and Robert Earl Keen, Dec. 13. The American Music Series brings shows from the Taj Mahal and Keb’ Mo’ Band, Sept. 19; ukelele virtuoso Jake Shimabukuro, Oct. 18; country star LeAnn Rimes, Dec. 12; and the Charlie Daniels Band, May 10.

The Starlight Jazz Club Series features performances from The Huntertones, Oct. 14; trumpeter/vocalist Bria Skonberg, Nov. 10; the Latin Jazz All Stars, featuring Steve Turre and Nestor Torres, Dec. 8; Donny McCaslin, Feb. 10; vocalist Alicia Olatuja, March 2; and trombonist Conrad Herwig, April 28. For a full list of events or early access to tickets through the WAC’s subscription program, visit waltonartscenter.org.



          Migrate database for mobile application from Parse.com to similar service by caius9090   
My Android App back-end was using parse.com to hold the data. This service has now shut down but I want to see if there still some way to migrate the data out and host it on a similar service. Migration... (Budget: $30 - $250 USD, Jobs: Android, Cloud Computing, Database Programming, Mobile Phone, PHP)
          Mastering Bitcoin Programming the Open Blockchain ideal for non-technical users, investors, and business executives   
none
          Redneck DBA   

It’s 5:47AM and two things woke me up.

The dogs at the dairy next door. Like clockwork except driven by the sun and not adjusted for human convenience. Rumour has it that no “foreign” non-Homo sapien has ever made it half way down the drive-way. It may have no scientific data to back it up, but I take it is a fact.

The other is a heifer mowing grass three feet from the bedroom window. A beautiful animal, but get the fuck of my lawn! The 2-wire electric fence must have shorted due to a fallen branch and they have waltzed right into the house paddock.

I command the sleeping Blue Heeler.

KADIE! GET IN TO ‘EM!

I should have known the ensuing chaos would wake the whole family. Doesn’t matter…it’s a school day.

There is so much data to check and record. First the rain gauge, humidity sensor and wind speed average for the night. The thermometer backs up the fact that we are a having a cool summer. The chicken output remains a steady one egg per chicken per day. Experience says that any variation from that rate usually brings bad news. The Access database that manages these data sets has performed flawlessly for 8 years. If it ain’t broke…

Making my way to the network, I discover that 2 computers have rebooted during a power spike/surge. The UPS has protected the main development machine and backup server. Maybe next payday I will buy another UPS.

The spam idiots are relentless. Opera always does a great job filtering the crap but I check for false positives and find a perfect score. No sign of any problems from clients. The day just got a little brighter.

“Eat your breakfast…get dressed…your shoes are outside…where is your hat?...Hurry up or we will miss the bus!” The morning ritual is completed and we start the 15km drive down the dirt road to the bus stop.

I like this time of the day. With the radio playing mindless garbage, it gives me time to contemplate the day ahead and to try and model various database and code problems. With the kids safely on the bus, I turn for home. Nothing brilliant comes from my mind during the trip.

2 shots of locally grown coffee are consumed quick smart and I make my way towards the office. I have 4 different projects that I am currently working on. Two of them are in the .NET space while the others are a LAMP stack and a legacy VB6 data warehousing project. I find myself confusing language syntaxes each time I switch between projects. The equality and assignment operators always screw me.

I classify the programming task I am working on into one of three realms. I call them the “B” worlds. Bits for low level programming, Bytes for general programming and Boolean for the SQL work. Thankfully, the closest I have come to Bits programming in these projects is interfacing with USB devices.

The contrast between the B world and R (real) world is vital for my sanity. I like to finish the day doing something on the farm. Today I have a choice of 2 tasks. Fix the slave cylinder on the ute or turn the blood and bone fertiliser compost heap. I don’t feel like working upside down at the moment so I select the later task.

Walking back to the house brings a smile to my face as I realise that tomorrow is more of the same.


          ‘Rick and Morty’ Season 3 Finally Gets Premiere Date Almost 2 Years After Cliffhanger   

It’s been almost two years since the massive “Rick and Morty” Season 2 cliffhanger and Thursday night, we finally got not only a Season 3 premiere date  — but a trailer too.

New episodes of the cartoon will begin airing July 30 at 11:30 p.m. ET on Cartoon Network’s adult programming block Adult Swim.

“Welcome to the darkest year of our adventures,” Rick tells Morty in the trailer. This is quite a statement considering how the show has always been realistically dark, despite its outrageous subject matter.

Fans have been waiting nearly two years to see the continuing adventures of genius, often drunk and literally mad scientist Rick and his grandson Morty. “Rick and Morty” Season 2 ended on a massive cliffhanger, where Rick gets sentenced to prison and his family and world are left in shambles.

An epilogue promised fans a new season in a “year and a half, maybe longer,” but as the months ticked along, creators Dan Harmon and Justin Roiland were silent.

A comment made by Harmon at TCA in January led people to believe there was fighting between the two creators, which was causing the delay. However, Harmon took to Twitter last week to explain why “Rick and Morty” was taking so long. Basically, writing a critically-acclaimed animated series is hard.

“As I speak, more articles are coming out about me and Justin fighting,” he wrote. “Because it’s a less boring reason for a season to take long, And because I’m Dan Harmon, so it’s a smart f—ing first guess, it just happens to be hilariously not true even in the slightest. If you do know of me at all you know that if Justin and I HAD ever fought, not only wouldn’t we be able to keep it secret, We’d be all too eager to share it with you.”

Fans, luckily, got a surprise this April Fools Day when the first episode of Season 3 premiered. Now we just have to wait for the rest of it.

Watch the full trailer above.

Related stories from TheWrap:

Dan Harmon Shuts Down Rumors About 'Rick and Morty' Season 3 Delay

Will 'Rick and Morty' Succeed in Bringing Back McDonald's Szechuan Sauce?

Suspended 'SNL' Writer Katie Rich Offered New Gig by Dan Harmon


          Learn a trade in a day - What tradie skills can you learn yourself?   
Learn a trade in a day - What tradie skills can you learn yourself?

Disclaimer: You won't learn a trade in a day that will earn you a tradie's wages. However, you can learn some basic skills that will help you with your DIY projects. You might be surprised by the number of DIY short courses that are available.

Some of them may take longer than a day to complete, but you will learn something on your first day. You can start your DIY home improvement projects with the skills you learn in a day and expand on them as you continue your course.  

  1. DIY Skills at Local Schools 

  2. Construction Courses

  3. Home Renovation Courses

  4. Electronics Courses

  5. Woodworking Courses

  6. Landscaping Classes

  7. Interior Decorating Classes

  8. Why You Should Take a Tradie Course

DIY skills at local schools 

Many local night schools and even TAFE schools teach DIY trades to non-tradies. It's a good way for a young person to find an area they're interested in pursuing. If you already have a job, a DIY short course can help you with projects around the house.  

These courses are taught by professionals. It might be a retired builder or electrician or you might take a night course taught by a practicing tradie. Many tradies enjoy teaching courses and earn a little extra income from teaching. Whether you're looking for a construction course, an interior decorating course or anything in between, there's probably a short course out there for you.  

You will have to check with your local schools to find out what's available in your area, but you may be surprised by how many courses are available. Usually, if you live in a larger city, more courses will be available, but many courses are available in regional centres. Let's take a look at what's out there for you.  

Construction courses 

Why would you want to take a short construction course? A short course won't be enough to get a builder's licence, but it will be enough to help you know what your builders are doing on your renovation and you may even be able to work under supervision and save money.

Construction courses 

A short course can also help you budget money, read plans and understand more about the building trade. Some short courses that are available include:

  • Timber framing
  • Domestic plan reading
  • Estimating and costing
  • Introduction to townhouse planning
  • Waterproofing
  • Foundations, footings and slabs (basic information)
  • Building design
  • Passive building design 

When you're planning a renovation, are the plans a blur to you? How can you produce an accurate estimate of the cost of your project? Short courses will tell you what you need to know. You can even take a course in building design and work with your architect or building designer to come up with the perfect design for a granny flat or even your new home.

Home renovation courses 

You want to do some home renovation projects, but don't know where to begin. You can try winging it, but you probably won't do your home renovations the way they should be done. Take a course and you'll be confident about your skills. Some skills you can learn include: 

  • Owner builder courses
  • Home maintenance
  • Fix it yourself plastering
  • Plasterboard installation
  • Pergola construction
  • Timber decking
  • Timber house framing
  • House lock up and fixing
  • Know your own home 

Some of these courses (such as know your own home) are general in nature, but will give you valuable information you can use when renovating. Other courses are more specific. If you want to be an owner/builder, start with that course and take other courses as you build your home. A timber framing course and plasterboard installation course will help you be a successful owner/builder.  

Electronics courses 

A short course in electronics won't qualify you to become an electrician, but it can give you the knowledge you need to work with an electrician and know they are doing a good job. A good course to begin with is Electronics for beginners. The short course will teach you about the theory behind circuitry and you will learn how to test basic circuitry. You will also learn to recognise the colour coding of electronic circuitry.

Electronics course 

Another course that's available is basic PLC (Programmable Logic Controller) programming. Learning how to do PLC programming can help you program your home automation system and LED lighting.  

Woodworking courses

Woodworking courses 

Does the idea of building your own furniture appeal to you? Woodworking requires special skills, but you can learn the basics in a short course. Some courses you can take include: 

  • Basic woodworking will teach you how to use power tools safely. It will go on to teach you how to make secure timber joints and how to plan your project.
  • Level two woodworking will teach you more and will include instruction on how to use a jigsaw and router.
  • Introductory lathe courses for hobbyists 

You may also be able to find a cabinet maker or wood turner in your area who will be willing to help you with your woodworking project. They will teach you tool safety and how to use the tools you need to complete your project. If you don't have your own tools, they may allow you to work with them in their shop after hours. You may need to take out insurance for this type of training.  

Landscaping classes

Landscaping classes

Do you like to get out in the garden and do your own landscaping? A short course in landscaping will teach you everything you need to know. Some courses you might consider taking include: 

  • Horticulture for beginners
  • Landscape design
  • Chainsaw instruction
  • Plant identification and selection 

A landscape design course couple with a horticulture class will help you design the perfect garden. If you're planning on using a chainsaw, a chainsaw course will teach you how to use it safely and how to maintain your chainsaw 

Interior decorating classes

Interior decorating classes 

You want to do your own interior decorating, but also want to do it right. Professional interior decorators teach short courses that will give you the basic concepts you need to know. What will you learn at an interior decorating short course? 

  • Principles of interior decorating
  • Colour planning
  • Space planning
  • Decoration planning
  • Lighting
  • Soft furnishings
  • Furniture styles 

Interior design and decorating is a fascinating field. A short course will teach you the basics, but you may decide to take longer courses and become a professional interior decorator.  

Why you should take a tradie course 

Why should you take a course in learning a trade? Even a day course can give you valuable information. A longer course will teach you even more. DIY learning can be the worst way to learn a trade.  

Working with power tools can be dangerous. Saws and other power tools have quirks you need to know about before you use them. The best way to learn how to use them safely is from someone who has used them safely for years.

What about courses that don't involve the use of tools? You can read books about interior decorating, but attending a course gives you the opportunity to meet others who are also interested in the subject. Your teacher will be a professional decorator and you can ask them for ideas for your project.

Basically, taking a tradie course will teach you more than watching a YouTube video or reading a book. You will enjoy the course because you will be with like-minded individuals and learning from a professional. You can't ask YouTube or a book questions, but when you take a tradie skill course, you can ask your instructor anything you like.  


          James Lecesne to Return to Wellfleet in THE ABSOLUTE BRIGHTNESS OF LEONARD PELKEY   

Acclaimed by audiences and critics alike last summer, James Lecesne returns for a limited run of The Absolute Brightness of Leonard Pelkey, July 13-15, 2017 at Wellfleet Harbor Actors Theater. Written and performed by Lecesne, the one man play runs at 8:00 p.m. for three performances only.

Based on Lecesne's 2008 book of the same name, The Absolute Brightness of Leonard Pelkey tells the story of detective Chuck DeSantis, a small New Jersey town investigator who sets out to solve the disappearance flamboyant, 14-year-old Leonard Pelkey. Through Leonard's world, DeSantis confronts the horrors of bullying and sees how a community can learn to embrace their differences by having the courage to stay true to their individuality.

James Lecesne wrote the screenplay for the short film Trevor, which won an Academy Award and inspired the founding of The Trevor Project, the only nationwide 24-hour suicide prevention and crisis intervention lifeline for LGBT and questioning youth. James is a playwright, actor, published author, Academy Award winner, Emmy Nominee, and producer who has received numerous awards for his work in the theater including Drama Desk and Outer Critics Circle Awards. The New York Times hailed James Lecesne "among the most talented solo performers of his (or any) generation."

Tickets start at $20 and may be purchased online at what.org, at the WHAT box office, or by calling 508-349-9428. Student tickets are $12 and senior discounts are available. For questions about age-appropriate content, please contact the box office. The Absolute Brightness of Leonard Pelkey is recommended for nearly everyone.

IF YOU GO:

The Absolute Brightness of Leonard Pelkey
Written and performed by James Lecesne

July 13-15, 2017 at 8:00 p.m.
At Wellfleet Harbor Actors Theater
2357 Route 6, Wellfleet

$20-$35; students $12
508-349-9428
www.what.org

Wellfleet Harbor Actors Theater is the award-winning theater company that inspired "a new vigor for theater on the Cape" (New York Times). In honor of the theater's namesake, Julie Harris, WHAT continues to be a sounding board for new and bold ideas, presenting "continually adventurous theater" (Boston Globe), and year-round programming.

Photo Credit: Matthew Murphy


          Cape Cod Chamber Music Festival Celebrates Works of Strauss, Brahms in Concert   

Cape Cod Chamber Music Festival (CCCMF), celebrating its 38th season as Cape Cod's premiere presenter of summer chamber music presents Strauss' Piano Quartet featuring works by Strauss, Brahms and Enescu on Thursday, August 10, 7:30 pm at First Congregational Church, 650 Main Street, Chatham.

In Strauss' Piano Quartet, critically acclaimed favorite instrumentalists join CCCMF Co-Artistic Director Jon Nakamatsu to perform Richard Strauss' only piano quartet with its' soaring melodies and thrilling intensity. Being that Strauss was heavily influenced and inspired by the works of Johannes Brahms, an appropriate program inclusion is Brahms' 'Sonata No. 2 in A Major for Violin and Piano, Opus 100'. George Enescu's 'Piece in F Major for Viola and Piano' opens the program.

Joining Nakamatsu for the performance are Adam Barnett-Hart (First Violin, Escher String Quartet), Rebecca Young (Associate PrincipAl Viola, New York Philharmonic), Daniel McDonough (cellist, Jupiter String Quartet) and Susan Grace (soloist and pianist, Quattro Mani).

Program: Adam Barnett-Hart, violin

Rebecca Young, viola
Daniel McDonough, cello
Susan Grace, piano
Jon Nakamatsu, piano

GEORGE ENESCU (1881 - 1955)
Piece in F Major for Viola and Piano (1906)

JOHANNES BRAHMS (1833 - 1897)
Sonata No. 2 in A Major for Violin and Piano, Opus 100
Allegro amabile
Andante tranquillo
Allegretto grazioso (quasi Andante)

Richard Strauss (1864 - 1949)
Quartet in C Minor for Violin, Viola, Cello and Piano, Opus 13
Allegro
Scherzo: Presto
Andante
Finale: Vivace

CCCMF's 38th summer season features 12 compelling concerts from August 1 through 25 at 7:30 pm in locations throughout the region.

Tickets ordered on or before June 30: $34 general admission; $15 for college students (with ID); admission is free for attendees 18 and under. General admission to three or more concerts: $32 per ticket. Emerson String Quartet concert: $50 (whether individually purchased or as part of the three-concert package)

Tickets ordered on or after July 1: $38 general admission; $15 for college students (with ID); admission is free for attendees 18 and under. General admission to three or more concerts: $36 per ticket. Emerson String Quartet concert: $55 (whether individually purchased or as part of the three-concert package)

Special first-time ticket buyer's price and a discounted ticket for the August 1 concert, if you are between the ages of 19 and 40, are available by calling Festival office.

Festival seating is limited to venue capacity, advance purchase is recommended. Tickets ordered online are available at will call at the performances. Tickets may also be purchased by calling or visiting the box office at 508-247-9400 or at 3 Main Street Unit 6, North Eastham. Box office hours are 10 am to 3 pm, Monday through Friday. Phone and online ticket orders are available until 12 noon on the day of each concert.

For more information about Cape Cod Chamber Music Festival's 2017 season, performers, mission and venues, visit capecodchambermusic.org, or follow Cape Cod Chamber Music Festival on Facebook and Twitter.

About the Cape Cod Chamber Music Festival

Hailed by The New York Times as "A Triumph of Quality," the Cape Cod Chamber Music Festival (CCCMF) has been a year-round presenter of chamber music and a major contributor to the cultural life of Cape Cod since its inception in 1979. Founded as the Cape & Islands Chamber Music Festival by the late collaborative pianist Samuel Sanders, the Festival continues his legacy. Now entering its 38th season, CCCMF presents four weeks of intensive chamber music programming in a variety of Cape locations in July and August. Throughout the rest of the year, CCCMF presents autumn and spring concerts, a community outreach program, and benefit concerts in New York and on Cape Cod. Hoping to ignite the interest of a younger audience, CCCMF welcomes all youth up to age 18 to attend any regular concert free of charge. The Festival is also host to a Composer-in-Residence program, and features composers with Cape Cod connections. CCCMF is a private, non-profit organization supported by a volunteer Board of Directors with financial support from individuals, corporations, and foundations both local and nationwide. For more information about CCCMF's programs, schedule or tickets, visit capecodchambermusic.org, call 508-247-9400 or follow Cape Cod Chamber Music Festival on Facebook and Twitter.


          MIDNIGHT AT THE NEVER GET to Make New England Premiere in Provincetown   

Midnight at The Never Get, the award-winning and critically-acclaimed musical hit of last summer's New York Musical Festival, will enjoy its New England premiere this summer, a co-production of Visceral Entertainment (Michael Chase Gosselin and Tim Sulka) and Dustin Sparks Productions.

Starring Sam Bolen and Kevin Quill (with a special appearance by Jody O'Neil) and conceived by Mr. Bolen and Mark Sonnenblick, with book, music and lyrics by Mr. Sonnenblick, choreography by Andrew Palermo (Allegiance, The Other Josh Cohen), music direction & arrangements by Adam Podd (The Spidey Project, Fiction in Photographs) and direction by Max Friedman (Ruby Manger Live!, Charlie Rosen's Broadway Big Band), Midnight at The Never Get will play a (6) six-week engagement at Provincetown Inn (1 Commercial Street - Provincetown, MA) with performances beginning Monday, July 24th. Opening Night is set for Saturday, July 29th at 7pm. The show will play through Sunday, September 3rd.

Featuring a sultry score fashioned after the American Songbook, Midnight at The Never Get imagines two men who never existed at a time that very much did. Trevor Copeland (Sam Bolen) and Arthur Brightman (Kevin Quill) have the perfect New York romance. That's swell. In 1965, it's also against the law. So, in the back room of "The Never Get," an illegAl Greenwich Village gay bar, they put together a show called "Midnight" - a queer nightclub act where Arthur writes love songs for Trevor to sing to a man. But as they hurtle towards the end of the decade and tensions in the Village reach a breaking point, the lovers find themselves caught in a relationship they can't control and a movement they don't understand.

In a statement, Producer Michael Chase Gosselin said, "Tim Sulka, Dustin Sparks and I are very excited to bring Midnight at The Never Get to Provincetown audiences this summer and share this one-of-a-kind theatrical experience that combines elements of a book musical and jazz cabaret in a site-specific production at the Provincetown Inn. I'm thrilled that we are able to give audiences a taste of what stepping back in time to 1965 at "The Never Get" could be while they enjoy the show's universal love story and remarkable score."

The creative team includes Christopher & Justin Swader (set), Vanessa Leuck (costumes), Jamie Roderick (lighting), Kevin Heard (sound), Addison Heeren (prop design) and Preston Ridge (creative consultant). The Production Stage Manager is KJ Morton.

Midnight at The Never Get will play Monday - Friday at 8:30pm and Saturday at 6:00pm & 9:30pm. Tickets are priced at $25-$65 and beginning July 3rd, may be purchased online at www.brownpapertickets.com or by calling 1-800-838-3006.

ABOUT THE ARTISTS:

Mark Sonnenblick (Co-Conceiver/Book/Music/Lyrics) is a composer, lyricist, and scriptwriter, although not always at the same time. Collaborations include Midnight at The Never Get (Bistro Award, MAC Award Nominee "Show of the Year"), Independents ("Best Production" FringeNYC, "Critics' Pick" New York Times), Dragons Love Tacos (TheatreworksUSA), Twenty Minutes or Less (Washington National Opera), Ship Show (Yale Institute for Music Theatre), Stompcat in Lawndale (Ars Nova Ant Fest), and Wheel of Misfortune (Denver Center for the Performing Arts). He has developed work at The Johnny Mercer Writers Colony (Goodspeed Musicals), UCross Foundation, Rhinebeck Writers Retreat, The John Duffy Institute (Virginia Arts Festival), Composers and the Voice (American Opera Projects), and The Johnny Mercer Songwriting Project. He lives in Brooklyn with no pets of any kind.

Sam Bolen (Co-Conceiver/Trevor Copeland) is an actor and a singer living in Brooklyn. He pitched the idea that became Midnight at The Never Get to Mark Sonnenblick in Mark's old kitchen, then went on to originate the role of Trevor in productions at Don't Tell Mama and the 2016 New York Musical Festival, for which he and the team won the Bistro Award for Book Musical last March. Other New York credits include STREEPSHOW! Season 1 (The Tank); The New Yorkers, Irma La Douce, Gentlemen Prefer Blondes, Annie Get Your Gun, It's a Bird. It's a Plane. It's Superman! (Encores!); POPE! An Epic Musical (NYMF, Outstanding Lead Actor); Macbeth, Twelfth Night, Hamlet (Old Hat Theatre Co.). Regional: A Funny Thing Happened On The Way To The Forum, The Drowsy Chaperone, The Mousetrap, Forever Plaid (New London Barn Playhouse); John & Jen (Red House Arts Center). Sam is a graduate of the William Esper Studio and of Yale University, where he was a Whiffenpoof and a Spizzwink. www.sambolen.com / @wafflehouses

Kevin Quill (Arthur) is an actor, director, and piano bar entertainer. He recently reprised the role of The Poet in the one-man show An Iliad, which has toured throughout the northeast since 2013. He played Jamie in his original concept of The Last Five Years where the two characters accompany one another on piano. Kevin lives in New York City - more info can be found at thekevinquill.com.

Jody O'Neil (Sister Etcetera) is a New York/Cape Cod-based actor and writer whose recent stage work has swung the gamut from a Cockney junkie Claire in The Maids and a DJ-spinning Mephisto in Doctor Faustus Lights the Lights to a pair of iconic O'Neill roles: Tyrone, Jr. in A Moon for the Misbegotten and Chris Christopherson in Anna Christie. On screen, he has seduced co-star Margot Kidder in a wicked tango in Never Met Picasso and rallied around Samuel L. Jackson as one of Mango's Boys on "Saturday Night Live." Currently, he can be seen as failed banker Ivan Zamir in the locally-produced 14-part mini-series, "Offseason," streaming on Amazon Prime.

Max Friedman (Director) is a director of theatre, concerts, and cabaret. He is the recipient of a 2017 Bistro Award for Midnight at The Never Get, which he helmed at Don't Tell Mama and 42West as part of NYMF 2016. He most recently directed a concert presentation of Paul Jabara's Rachael Lily Rosenbloom... and don't you ever forget it at 54 Below. Other NYC credits include Love Letter: Joe Iconis & Lauren Marcus do Johnny Cash & June Carter Cash (Don't Tell Mama), Noel & Julia's Wayward Brainchildren (Joe's Pub), Charlie Rosen's Broadway Big Band (2016 MAC Award Nomination, Show of the Year), Ruby Manger Live! The Farewell Engagement by Julia Mattison & Noel Carey (54 Below), The Bluest Ink (Sondheim Jazz Revue, le poisson rouge), and 6 by Zack Zadek (NYMF 2012). Regional credits include Murder Ballad (NJ Premiere) and The Longing and The Short of It by Daniel Maté (5 Carbonell Award Nominations, including Best Director). As an Assistant Director, projects include Jasper In Deadland (Prospect Theater Company), The Other Josh Cohen (Soho Playhouse), Uncool:The Party, 35MM, and many projects with Joe Iconis and Family including Things to Ruin, Bloodsong of Love, and The Annual Joe Iconis Christmas Spectacular. Friedman is currently in residence as the Associate Director of Programming of the legendary cabaret institution Don't Tell Mama where he has helmed over a dozen original cabaret acts and a series of developmental presentations of new musicals. www.maxfriedmandirector.com Instagram/Twitter: @maxbfriedman

Visceral Entertainment (Producer) This newly formed theatre, film and television Production Company brings together the talents of its two principals, Michael Chase Gosselin and Tim Sulka. In addition to this limited engagement of Midnight at The Never Get, Visceral Entertainment is currently producing the original musical, Money Talks, now playing at the Davenport Theatre Off-Broadway. Other projects in development include the holiday musical, The Most Miserable Christmas Tree, a new Broadway musical comedy, Pope! An Epic Musical, an audience immersive musical stage adaptation of the Jonathan Lethem novel, You Don't Love Me Yet and a stage adaptation of the novel The Black Ledger, by D.G. Allen. Film and television projects include Urbn FaeryTales, a musical television series of familiar fairy tales set and filmed in modern day Brooklyn, and Prime Cuts, a film of the darkly comic graphic novel, a teen version of the Sweeney Todd legend.

Dustin Sparks Productions (Producer) is a multi-faceted, entertainment company specializing in producing theatre and live entertainment. The company is committed to producing projects that celebrate the human experience through new works, and adaptations that bring to life a range of diverse stories to inspire and engage audiences.


          Grand Theatre Announces Casting for Upcoming Season   

The Grand Theatre is thrilled to announce an extraordinary line-up of local and national, returning and debuting artists in the 2017/18 Season. The season features a stunning artistic presence including Tara Rosling, Benedict Campbell, Catherine Joell MacKinnon and Daniel Williston. In addition, the Grand welcomes nationally and internationally renowned directors including Peter Hinton, Tracey Flye, Carey Perloff, and the Grand's Artistic Director Dennis Garnhum, who makes his Grand directing debut in his first season. Single tickets go on sale Tuesday July 4, 2017.

"We've been incredibly busy these last several months auditioning artists from across Canada. Our coming season will be our biggest yet with 95 actors and an expansive creative team producing known and new works on our stages," said Artistic Director, Dennis Garnhum.

Peter Hinton directs SILENCE, the inaugural production of the COMPASS New Play Development program. Hinton recently directed the Canadian Opera Company production of Louis Riel and currently is directing Octoroon at the Shaw Festival. Making her Grand debut in SILENCE is Tara Rosling, now in her 10th season at Shaw appearing in Dancing at Lughnasa and Middleton. She will perform with Catherine Joell MacKinnon, director of the biennial Toronto International Deaf Film and Arts Festival, and Suzanne Bennett, Acting Professor at Sheridan College, among others.

Debuting in the Grand's production of ONCE is Nathan Carroll (Andrej), who stared as Terry Fox in the Marathon of Hope: The Musical, and Soulpepper's Daniel Williston (Billy). ONCE will be directed by Tracey Flye, Associate Director of the 2015 Mirvish production of Once.

Debuting in CHARIOTS OF FIRE, which will be directed by Garnhum with set and costumes by the award-winning Bretta Gerecke, are Harry Judge, who is frequently at the Chicago Shakespeare Theatre and Shaw, and Charlie Gallant, who has appeared at a number of Vancouver-based theatres including the Arts Club, Studio 58, and Bard on the Beach. Judge and Gallant are the lead actors (and runners) in this North American Premiere of the stage adaptation of Chariots of Fire.

The 2017/18 season marks a return to the Grand for many artists including Jeremy Walmsley (Buddy: The Buddy Holly Story ) starring as Guy in ONCE; Rachel Jones (A Christmas Story) who will be Mrs. Cratchit in A CHRISTMAS CAROL, and Stratford veteran Michael Spencer-Davis (Art) starring as Gardiner Greene Hubbard in SILENCE.

Several Londoners are cast in the coming season including Jim Doucette, Patrick Monaghan, Owen Barteet (who makes his acting debut as Tiny Tim in A CHRISTMAS CAROL), and Artistic Director of London's Original Kids Theatre Company, Andrew Tribe who will be Assistant Director for CHARIOTS OF FIRE.

The season also includes, on the Spriet Stage, Rebecca Northan's run-away improv hit, BLIND DATE, and the stage adaptation of Khaled Hosseini's best-selling novel A THOUSAND SPLENDID SUNS, which premiered at A.C.T in San Francisco and was directed by Carey Perloff.

On the Grand's McManus Stage will be a three-play series that includes Ronnie Burkett's return engagement of THE DAISY THEATRE and 2b Theatre Company's WHAT A YOUNG WIFE OUGHT TO KNOW by award-winning playwright Hannah Moscovitch. The Grand's new production of THE GLASS MENAGERIE, directed by Artistic Associate Megan Watson, will premiere in the round on the McManus Stage, representing the Grand's return to producing in this intimate space after a 10-year hiatus. The audition call for the show received a record-breaking response from across the country with over 750 submissions for four roles. Casting begins this summer for this iconic Tennessee Williams play.

Since it began over 20 years ago, the Grand's High School Project has produced some of the country's top actors. Several alumni of the program return to the Grand this season including Ellen Denny, David Michael Moote, and Anwyn Musico in CHARIOTS OF FIRE, as well as Aidan deSalaiz, Kelsey Falconer, and Moote in A CHRISTMAS CAROL.

For additional casting and creative team preview listings, see the following pages.

Single tickets for the 2017/18 Season go on sale at grandtheatre.com, by phone (519-672-8800) and at the box office (471 Richmond Street) on Tuesday, July 4, at 10 a.m. Single tickets range from $29.95 to $88.50; season subscribers save up to 25% off the regular single ticket price.

The Grand Theatre 2017/18 Season is proudly sponsored by BMO Financial Group.

About The Grand Theatre
Under the leadership of newly appointed Artistic Director Dennis Garnhum and Executive Director Deb Harvey, the Grand is a leading cultural hub proudly located in the heart of downtown London, Ontario. The Grand offers diverse, relevant, and original stories from around the globe through collaborations with national and international performing arts organizations and is committed to developing, producing, and premiering original homegrown stories through COMPASS, a New Play Development Program. The Grand supports educational programming and youth mentorship such as The High School Project, the only program of its kind in North America, and 100 Schools, a new community initiative that brings professional theatre to London-area schools in 2018 at no cost.

A not-for-profit regional theatre, the Grand produces and presents professional theatre on two stages: the Spriet Stage (839 seats) and the McManus Stage (144 seats). The Grand's season runs from September to May. The 2017/18 Season is now on sale.

SPRIET STAGE

ONCE
October 17 to November 4
Book by Enda Walsh
Music and Lyrics by Glen Hansard and Markéta Irglová
Based on the Motion Picture
Written and Directed by John Carney
Directed by Tracey Flye
Musical Direction by Joseph Tritt

A co-production with the Royal Manitoba Theatre Centre

Cast
Isaac Bell Svec
Zoë Brown Ivanka
Nathan Carroll Andrej
Duncan Cox Emcee
Quinn Dooley Ex-Girlfriend
Jeff Hamacher Bank Manager
Amanda LeBlanc Girl
Duff MacDonald Eamon
Jane Miller Baruska
Alicia Toner Reza
Jeremy Walmsley Guy
Daniel Williston Billy
Cory Wojcik Da

Creative Team
Tracey Flye Director
Joseph Tritt Musical Director
Brian Perchaluk Set and Costume Designer
Louise Guinand Lighting Designer
William Fallon Sound Designer
Thomas Alderson Assistant to the Director
Leslie Watson Stage Manager
Melissa Cameron Assistant Stage Manager
Fran Barker Apprentice Stage Manager

A CHRISTMAS CAROL
November 28 to December 30
By Charles Dickens
Adapted and Directed by Dennis Garnhum

Cast
Owen Barteet Tiny Tim
Benedict Campbell Ebenezer Scrooge
Ian Deakin Mr. Fezziwig
Aidan deSalaiz Fred
Jim Doucette Topper
Kelsey Falconer Mrs. Dilber
Tracey Ferencz Mrs. Fezziwig
Leah Gliddon Fan
Manya Hegde Belinda Cratchit
Rachel Jones Mrs. Cratchit
Amrit Kaur Abigail
Nathaniel Keith Boy Ebenezer
Michael Man Dick Wilkins
Patrick Monaghan Jacob Marley
David Michael Moote Spirit of Christmas Future
Christopher Newton Voice of Charles Dickens

Creative Team
Dennis Garnhum Director
Megan Watson Associate Director
Allan Stichbury Set Designer
Kelly Wolf Costume Designer
Bonnie Beecher Lighting Designer
Jamie Nesbitt Videographer
Jeremy Spencer Composer
Jim Neil Sound Designer
Kelly Luft Stage Manager
Lani Martel Assistant Stage Manager
Jordan Guetter Apprentice Stage Manager

SILENCE
January 16 to February 3, 2018
WORLD PREMIERE
By Trina Davies
Directed by Peter Hinton

Cast
Suzanne Bennett Gertrude Mercer McCurdy Hubbard
Graham Cuthbertson Alexander Graham Bell
Catherine Joell MacKinnon Eliza Bell
Madelyn Narod Berta Hubbard
Tara Rosling Mabel Bell
Michael Spencer-Davis Gardiner Greene Hubbard

Creative Team
Peter Hinton Director
Michael Gianfrancesco Set and Costume Designer
Beth Kates Lighting and Projection Designer
Richard Feren Sound Designer
Michael Hart Stage Manager
Sandi Becker Assistant Stage Manager
Kelly Boudreau Apprentice Stage Manager

CHARIOTS OF FIRE
April 17 to May 5, 2018
NORTH AMERICAN PREMIERE
Stage Adaptation by Mike Bartlett
Screenplay by Colin Welland
Directed by Dennis Garnhum

Cast
Al Braatz Ensemble
Erin Breen Jennie Liddell
Ben Cookson Ensemble
Ellen Denny Florence
Fraser Elsdon Sandy
Alex Furber Aubrey Montague
Charlie Gallant Eric Liddell
Kyle Gatehouse Andy
Jonathan Gysbers Running Ensemble
Aaron Hastelow Running Ensemble
Harry Judge Harold Abrahams
David Michael Moote Running Ensemble
Anwyn Musico Sybil Evers
Joe Perry Running Ensemble
Edmund Stapleton Ensemble
Tim Welham Running Ensemble

Creative Team
Dennis Garnhum Director
Andrew Tribe Assistant Director
Bretta Gerecke Set and Costume Designer
Gerald King Lighting Designer
Jim Neil Sound Designer
Kelly Luft Stage Manager
Fran Barker Apprentice Stage Manager

McMANUS STAGE

THE DAISY THEATRE
October 23 to November 4, 2017
Created and Performed by Ronnie Burkett
Music and Sound Design by John Alcorn
Stage Managed by Crystal Salverda

WHAT A YOUNG WIFE OUGHT TO KNOW
February 6 to 10, 2018
A 2b Theatre Production
By Hannah Moscovitch
Directed by Christian Barry

THE GLASS MENAGERIE
April 3 to 14, 2018
By Tennessee Williams
Directed by Megan Watson

BEETHOVEN LIVES UPSTAIRS School Tour launches Spring 2018
2018 SCHOOL TOUR | Classical Kids
Series Creator Susan Hammond
Written by Barbara Nichol

Special March Break public engagement on the McManus Stage March 12 to 17, 2018.


          Java Developer (Intermediate and Senior) - AG Globe Services - Toronto, ON   
Mus be willing to learn or has a knowledge in either one of the programming languages (PHP, Python, Ruby). We are looking for Java Developers (Intermediate and...
From Indeed - Mon, 19 Jun 2017 19:40:21 GMT - View all Toronto, ON jobs
          programmation by smaylahn   
la creation des applicationes informatique (Budget: €250 - €750 EUR, Jobs: C Programming, C++ Programming, MySQL, Visual Basic, Windows Desktop)
          Nine programming recruits new Exec Producer   
Married at First Sight producer Tina Diaz joins Nine programming dept.
          Hire a Linux Developer with knowledge about kernel level rootkits functionality by aalesh28   
Embedded C based project on a 32 bit Linux processor. Someone with the knowledge of how the ROP (return oriented programming) is done and shellcodes. Not a major project, have done most of the work, just need help with a little bit of trouble shooting... (Budget: $30 - $250 USD, Jobs: C Programming, Embedded Software, Linux, Software Development, Ubuntu)
          Sr. Systems Programming Analyst (NJ-MD-GA-KY) - UNITED PARCEL SERVICE - Mahwah, NJ   
Environments (e.g., mainframe, midrange, open systems and x86/x64 architectures, mobile and fixed devices, etc.)....
From UPS - Thu, 29 Jun 2017 14:18:53 GMT - View all Mahwah, NJ jobs
          Panel: Kimono Wednesdays: A Conversation @ MFA   
Sign held by counterprotester in support of Kimono Wednesdays
July 15, 2015

Please see my original post for background: Monet's La Japonaise Kimono Wednesdays at the MFA.




Update 2/1316: Video of the panel is now available on the MFA's YouTube channel. I am working on my response and hope to have it posted in another week or so.

Update 2/4/16: I just received word from the MFA that although the Remis Auditorium is sold out, they will have an overflow room. This information will be posted to the event page shortly.
A limited number of first-come-first-serve free tickets for a live-feed in the Museum’s Riley Seminar Room will be available starting at 12:30pm on Sunday in-person at the MFA. For MFA members, proceed to the Remis Box Office to pick up a live-feed ticket. For non-members, visit any ticket desk for a free admission ticket and then proceed to the Remis Box Office to pick up a live-feed ticket. 
Update 2/3/16: Tickets now seem to be available again. ... and they're sold out again.
Update 1/30/16: The panel is now "Sold Out."

Yesterday the MFA announced that they will be hosting "Kimono Wednesdays: A Conversation", a panel discussion on the Kimono Wednesdays protests of last summer and the issues raised by the protests (Facebook event page here, but make sure you register for tickets on their website). The panel will be recorded and posted to their YouTube channel a few days after the event.

Last year The Boston Globe reported that it would be a symposium "developed with input from MFA audiences, on art history and traditions of representation." I had been told that it would present the topic of representation broadly and would not be focused only on Asian art and that the MFA was planning the event on their own. They apparently decided to go in a different direction. Here is a statement I received from the MFA:
"The MFA recognized that in order to foster an inclusive and open dialogue around the issues raised by “Kimono Wednesdays,” all perspectives needed to be welcome, including those critical of the MFA such as Decolonize Our Museums (DOM). DOM and the MFA held in-person meetings, phone calls, and e-mail exchanges throughout the fall and early winter, with DOM advising the MFA on speaker choice and the event’s structure. Additionally, input was sought from other internal and external individuals and communities." – Jasmine Hagans, Curator of Lectures, Courses, and Concerts, Museum of Fine Arts
Those who have been following the story since the beginning will recognize the names of three of the panelists: Dr. Elena Tajima Creef and Xtina (Christina) Huilan Wang were on the AARW/NAPAWF panel last September (the promised audio recording and transcript are not available but I wrote about it here Update 1/28/16: audio recording is now available without transcript) and Ryan Wong was on the Hyperallergic panel in Brooklyn last October (archived here).


Kimono Wednesdays: A Conversation


Date & Time
Sunday, February 7, 2016
1:30 - 3:30pm

Location
Museum of Fine Arts, Harry and Mildred Remis Auditorium (Auditorium 161)
465 Huntington Ave., Boston, MA 02115

Admission
Admission is free but tickets must be reserved. The auditorium seats 380. Note that if you order online you will be required to set up a login on the MFA's website. If you don't want to do that you can also order by phone or in person.

Moderator: Elena Tajima Creef, professor of women’s and gender studies, Wellesley College
Jasmine Hagans, curator of lectures, courses, and concerts
Matthew Teitelbaum, Ann and Graham Gund Director
Reiko Tomii, independent scholar; co-director, PoNJA-GenKon
Xtina Huilan Wang, Decolonize Our Museums
Ryan Wong, writer and visiting scholar at New York University’s A/P/A Institute

Last summer, the MFA offered programming focused around Claude Monet’s “La Japonaise,” with the goal of exploring the painting with visitors, as it documents both Monet’s interest in Japanese art and his reaction to the fad of “Japonisme” in Paris. Reproduction kimonos made in Japan for a Japanese audience were available for visitors in Boston to try on, an experience intended to engage them both with the garment and Monet’s rendering of it. The framing of the event through a Western lens sparked protest, counter-protest and much conversation and debate about issues including Orientalism, racialized iconography, institutional racism, representation of minority groups, and cultural appropriation.

How can institutions such as the MFA be more accountable to their publics? Who speaks for whom? Following an hour-long panel discussion, moderated by Elena Creef and featuring Xtina Huilan Wang, Reiko Tomii, and Ryan Wong, we invite you to join us in an informal dialogue: we want to hear your opinions and thoughts. We invite you to critically shape this conversation with all comments, ideas, and questions welcome.



Related posts

           MYC-dependent oxidative metabolism regulates osteoclastogenesis via nuclear receptor ERRα    
Osteoporosis is a metabolic bone disorder associated with compromised bone strength and an increased risk of fracture. Inhibition of the differentiation of bone-resorbing osteoclasts is an effective strategy for the treatment of osteoporosis. Prior work by our laboratory and others has shown that MYC promotes osteoclastogenesis in vitro, but the underlying mechanisms are not well understood. In addition, the in vivo importance of osteoclast-expressed MYC in physiological and pathological bone loss is not known. Here, we have demonstrated that deletion of Myc in osteoclasts increases bone mass and protects mice from ovariectomy-induced (OVX-induced) osteoporosis. Transcriptomic analysis revealed that MYC drives metabolic reprogramming during osteoclast differentiation and functions as a metabolic switch to an oxidative state. We identified a role for MYC action in the transcriptional induction of estrogen receptor–related receptor α (ERRα), a nuclear receptor that cooperates with the transcription factor nuclear factor of activated T cells, c1 (NFATc1) to drive osteoclastogenesis. Accordingly, pharmacological inhibition of ERRα attenuated OVX-induced bone loss in mice. Our findings highlight a MYC/ERRα pathway that contributes to physiological and pathological bone loss by integrating the MYC/ERRα axis to drive metabolic reprogramming during osteoclast differentiation.
           The many ways of osteoclast activation    
Osteoclasts are the cells responsible for bone resorption, a process that is essential for the maintenance of healthy bones. Bone diseases, such as osteoporosis, which are characterized by high rates of bone resorption and loss of bone mass, may benefit from treatments that inhibit osteoclast formation and/or function. The RANKL/RANK pathway is critical for both osteoclast formation and function, and these effects are thought to be mediated by the transcription factor nuclear factor of activated T cells, cytoplasmic 1 (NFATc1). In this issue of the JCI, Bae et al. challenge the convention that NFATc1 is the sole critical regulator of RANKL/RANK-dependent osteoclast activation. Specifically, the authors show that MYC drives metabolic reprogramming in osteoclasts and that MYC induces estrogen receptor–related receptor α (ERRα) to regulate osteoclastogenesis. Importantly, both loss of MYC and pharmacological inhibition of ERRα attenuated bone loss in a mouse model of osteoporosis. Together, the results of this study suggest that the MYC/ERRα pathway should be further explored as a drug target for bone diseases.
          Mix 106.1 switches formats to focus on throwback hip hop as 'Real 106.1'   
"We're thrilled to launch a station that really represents Philly," iHeartMedia Philadelphia senior vice president of programming Brian Check said.
          8 Cool Tools You May Have Missed at ISTE 2017   

It's not easy to stand out among the giants of edtech like Google, Apple, or Microsoft. Still, smaller developers are innovating at a rapid pace and are creating some truly exciting tools. At education conferences in particular, teachers are constantly distracted by flashy booths, expensive giveaways, superhero characters, and other marketing gimmicks. It can be hard for teachers, tech coordinators, and schools to tune out the noise and focus on what's good for learning. 

At the International Society for Technology in Education (ISTE) conference this year, there was a lot of fanfare and some really great products. But scouring the expo hall floor, I couldn't help but notice how much there was to see and how many tools were confusingly similar in what they offered. I wondered if teachers struggled to sort through the options and if they were able to make it to the booths of less-well-known tools.

Now that the conference is over, we've done some of that work for you: Check out these tools you may have missed at ISTE this year. Some are awesome as-is, and some have a ways to go, but each is trying to do something different to make it a must-have in your classroom. Once you're done, see our tips below for making the most of your conference next year.

Love Nearpod or Socrative? Take a look at Spiral.

This U.K.-based developer offers a student-engagement platform with formative assessment tools such as quizzes, interactive presentations, polls, and video discussion similar to Edpuzzle.

What's different: In addition to the normal assessment features, Spiral has a tool called Team Up. Aimed at building collaboration, teachers can group students through their devices into customized roles ready for group work. After brainstorming and delivering a final presentation, teachers can see the work done by each student -- even if it never made it into the final product. It's an interesting take on collaboration that's worth a look. 

  Telling digital stories through iMovie? Try exploring Binumi.

The digital storytelling space is filled with animation- and video-creation tools from GoAnimate to Flipgrid. Binumi also wants to give you the tools needed to create engaging videos in minutes.

What's different: Binumi doesn't want to be one of the tools you use; it wants to be the only tool. They claim to be the only platform with powerful editing tools supported by thousands of pieces of royalty-free content ready for remixing, as well as robust publishing options -- a trifecta of resources to create the next great story. The demos of student work were impressive, and the creative possibilities seem endless; Binumi might just be a tool to watch. 

  Using Google Expeditions for VR? Take CoSpaces for a spin.

From Expeditions to NYTVR, lots of tools these days engage students with high-quality virtual reality experiences.

What's different: CoSpaces actually lets you make your own virtual reality movies in the classroom. Students can create anything from virtual exhibitions to scientific models to literature interpretations and then share and experience their creations in VR. A lot of teachers have started using CoSpaces in the classroom already, but here at ISTE they've launched an Edu version of the tool.

Other tools with potential

Here are some other tools that caught my eye for trying something different in their field. They may not be for every educator, but one might just be the hidden gem you've been looking for:

Xplor Labs: There isn't much content here yet (they say more is coming), but Xplor Labs, like Defined STEM, is interested in real-world project-based learning. But it has a unique mission: solving problems through science and engineering to make the world a safer place.  Silas: Apps like The Social Express II or Hall of Heroes attempt to help guide kids through social situations. Silas uses gamification, avatar creation, and (soon) VR to help kids record videos of their own situations and get teachers involved in feedback.  WorkbenchTinkerCAD hosts online places for students to share their created projects, but Workbench wants to help guide students through the steps of project-based learning and wants to be a platform that connects all students and teachers throughout the whole district. Studytracks: Part Flocabulary and part Quizlet, Studytracks puts curriculum to music. Ziro: There's Sphero and Ozobot and a host of other robotics tools out there. How's Ziro trying to be different? They're focusing on designing robots through motion-controlled hand gestures and letting the coding motivation arise naturally. Tips for your next conference

In case you're looking to find that hidden gem of a tool, here are some ideas for getting through the tangle of booths at any conference:

Avoid the lines: Developers at quieter booths will be much more willing to talk you through their tools. Go to the small booths like in the Startup Pavilion or booths at the far ends of the expo hall. Ask developers who their competition is, and then ask them how they're different. Talk to other educators -- everyone is usually excited to share one of their great "finds."
          FPGA High Level Design Developer - Intel - Toronto, ON   
Full programming experience such as C/C++/Java Inside this Business Group. As part of Intel, we will continue to apply Moore's Law to drive the future of field...
From Intel - Tue, 27 Jun 2017 10:28:58 GMT - View all Toronto, ON jobs
          College Radio Watch: WUMD Leaves FM, WUSB’s 40th Anniversary, and More News   

On Monday I caught a bit of the final moments of WUMD over FM. The community-focused college radio station at University of Massachusetts, Dartmouth is moving to an online-only format after its FM license was sold to Rhode Island Public Radio. To mark the occasion, WUMD aired special programming and shared video from the studio […]

The post College Radio Watch: WUMD Leaves FM, WUSB’s 40th Anniversary, and More News appeared first on Radio Survivor.


          BSP/Driver   
Spectrosign Software Solutions Pvt.Ltd - Hyderabad, Telangana - Secunderabad, Telangana - for this job. Redirect to company website BSP/Driver Spectrosign Software Solutions Pvt.Ltd 4 to 8 yrs As per Industry Standards Hyderabad/ Secunderabad... to compile, run and tweak Linux kernel for MIPS/PowerPC platforms Awareness of the Linux kernel and device driver programming. Exposure...
          James Graham's Political Drama THIS HOUSE to Tour the UK in 2018   

James Graham's critically acclaimed and prescient political drama THIS HOUSE which played to sold-out houses at the National Theatre, Chichester Festival Theatre and in the West End will begin its first ever national tour at the West Yorkshire Playhouse, Leeds 22 February - 10 March 2018 (press night tbc) before visiting Cambridge Arts Theatre (12 - 17 March), Theatre Royal Bath (19 - 24 March), Edinburgh Festival Theatre (27 - 31 March), Nottingham Theatre Royal (10 - 14 April), Birmingham Repertory Theatre (16 - 21 April), The Lowry, Salford (24 - 28 April), Theatre Royal Plymouth (1 - 5 May), Norwich Theatre Royal (7 - 12 May), Malvern Theatres (14 - 19 May), Yvonne Arnaud Theatre, Guildford (21 - 26 May) and Lyceum Theatre, Sheffield (29 May - 2 June). The tour is supported by the Arts Council of England Grants for the Arts.

Directed by Jeremy Herrin, the production is designed by Rae Smith with lighting design by Paule Constable, music by Stephen Warbeck, choreography by Scott Ambler and sound by Ian Dickinson. Cast to be announced.

1974. The UK faces economic crisis and a hung parliament. In a culture hostile to cooperation, it's a period when votes are won or lost by one, when there are fist fights in the bars and when sick MPs are carried through the lobby to register their vote. It's a time when a staggering number of politicians die, and the building creaks under idiosyncrasies and arcane traditions.

Set in the engine rooms of Westminster, This House strips politics down to the practical realities of those behind the scenes; the whips who roll up their sleeves and on occasion bend the rules to shepherd and coerce a diverse chorus of MPs within the Mother of all Parliaments.

James Graham won the Pearson Playwriting Bursary in 2006 and went on to win the Catherine Johnson Award for Best Play of 2007 for Eden's Empire. His recent plays include Ink (Almeida), Monster Raving Loony (Theatre Royal, Plymouth), The Vote (Donmar Warehouse), Finding Neverland (American Repertory Theater), The Angry Brigade (Theatre Royal, Plymouth and The Bush) and Privacy (Donmar Warehouse). He has two new plays opening this year Quiz (Chichester) and Labour of Love (West End).

Jeremy Herrin is Artistic Director of Headlong, for which he has directed Junkyard (Bristol Old Vic/Theatr Clwyd/Rose Theatre Kingston), Observe the Sons of Ulster Marching Towards the Somme (UK Tour), The Absence of War (UK Tour) and The Nether (at the Royal Court and in the West End). For the National Theatre his directing credits include Common (A co-production with Headlong), The Plough and the Stars (co-directed with Howard Davies), People, Places & Things (A co-production with Headlong which transferred to the West End, begins a major UK tour in September and opens at St Ann's Warehouse, New York in October), This House (Olivier nomination for Best Director), which transferred to Chichester Festival Theatre and the West End in a co-production with Headlong, and Statement of Regret. For the RSC he directed the world premiere of Hilary Mantel's Man Booker prize-winning novels Wolf Hall and Bring Up the Bodies, which transferred to the West End in May 2014 and Broadway in March 2015 and for which he won the Evening Standard Award for Best Director and was nominated for an Olivier and Tony Award.

Jeremy will direct James Graham's new play Labour of Love, a Headlong and Michael Grandage Company co-production, opening in the West End in September.

THIS HOUSE is produced on tour by Jonathan Church Productions and Headlong. For more about the tour, visit headlong.co.uk/productions/house-uk-tour.

THIS HOUSE TOUR DATES:

West Yorkshire Playhouse, Leeds 22 February - 10 March 2018

on sale date to be announced www.wyp.org.uk

Cambridge Arts Theatre 12 - 17 March 2018

on sale 10 July www.cambridgeartstheatre.com

Theatre Royal Bath 19 - 24 March 2018

on sale date to be announced www.theatreroyal.org.uk

Edinburgh Festival Theatre 27 - 31 March 2018

on sale 5 July www.edtheatres.com/thishouse

Nottingham Theatre Royal 10 - 14 April 2018

on sale 7 July www.trch.co.uk

Birmingham Repertory Theatre 16 - 21 April 2018

on sale on 7 July www.birmingham-rep.co.uk

The Lowry, Salford 24 - 28 April 2018

on sale 30 June www.thelowry.com

Theatre Royal, Plymouth 1 - 5 May 2018

on sale 18 July www.theatreroyal.com

Norwich Theatre Royal 7 - 12 May 2018

on sale 21 August www.theatreroyalnorwich.co.uk

Malvern Theatres 14 - 19 May 2018

on sale 4 July www.malvern-tickets.co.uk

Yvonne Arnaud Theatre, Guildford 21 - 26 May 2018

on sale date to be announced www.yvonne-arnaud.co.uk

Lyceum Theatre, Sheffield 29 May - 2 June 2018

on sale date to be announced www.sheffielddtheatres.co.uk

Headlong creates exhilarating contemporary theatre: a provocative mix of innovative new writing, reimagined classics and influential twentieth century plays that illuminate our world.

Headlong is one of the most ambitious & exciting theatre companies in the world. We make bold, innovative productions with some of the UK's finest artists. We take these industry leading, award-winning shows around the country & beyond, in theatres & online, attracting new audiences of all ages & backgrounds. We engage as deeply as we can with these communities & this helps us become better at what we do.

Our productions have included Common (National Theatre), Junkyard (Bristol Old Vic, Theatr Clwyd and Rose Theatre Kingston), This House (Chichester Festival Theatre and West End), Pygmalion (UK tour), Boys Will Be Boys (Bush Theatre), People, Places & Things (National Theatre and West End), 1984 (UK and international tours and West End), The Nether (Royal Court Theatre and West End), American Psycho (Almeida and Broadway), Chimerica (Almeida and West End), and Enron (UK tour, West End and Broadway).

Jonathan Church Productions was formed in 2015 in association with Delfont Mackintosh Theatres to produce and general manage high quality theatre in the West End, on tour and internationally.

Recent productions include Fracked (UK tour); Sand in the Sandwiches (Theatre Royal Haymarket, London and UK tour); Loves Labours Lost and Much Ado About Nothing (Chichester, Manchester, Theatre Royal Haymarket London); This House (Chichester and Garrick Theatre London); The Dresser (UK tour and Duke of York's Theatre London). General Management projects include Strictly Ballroom the Musical (Toronto) and North By North West (Toronto).

Jonathan Church is currently Artistic Director of Bath Theatre Royal's summer season. He was Artistic Director of Chichester Festival Theatre (2006-2016); Artistic Director of Birmingham Repertory Theatre (2001 - 2006); Associate Director of Hampstead Theatre (1999-2001); Artistic Director of Salisbury Playhouse (1995-1999); Associate Director of Derby Playhouse (1994-1995) and Assistant Director of Nottingham Playhouse (1992 - 1994).

Jonathan's West End productions as a Director include Hobson's Choice, Taken at Midnight (Theatre Royal Haymarket), Singin' in the Rain (Palace Theatre), The Resistible Rise of Arturo Ui (Duchess Theatre), Of Mice and Men (Savoy Theatre and The Old Vic), The Witches (Wyndham's Theatre), A Busy Day (Lyric Theatre), The Life and Times of Nicholas Nickleby (Gielgud Theatre). He is currently directing Racing Demon for Bath Theatre Royal.

The National Theatre is dedicated to making the very best theatre and sharing it with as many people as possible. We produce productions on the South Bank in London each year, ranging from reimagined classics to modern masterpieces and new work by contemporary writers and theatre-makers. The National's work is seen on tour throughout the UK, in London's West End, internationally (including on Broadway) and in collaborations and co-productions with regional theatres.

National Theatre Live, which broadcasts live performances to cinema screens internationally, is now celebrating its 7th year and has been experienced by over 6 million people worldwide in 200 countries. For more information, visit NTLive.com

The Clore Learning Centre at the NT is committed to providing programmes for schools, young people, families, community groups and adult learners. The nationwide youth theatre festival Connections and playwriting competition New Views engage thousands of young people around the country. Further, over 2,600 secondary schools have signed up to the free streaming service, On Demand in Schools since its launch in September 2015.

In 2015-2016 the NT:

- Staged 34 productions and gave 3,057 performances in the UK and internationally.

- Reached audiences of over 787,000 on the South Bank, and over 3.7 million worldwide (South Bank, West End, touring and NT Live).

- Broadcast, via the NT Live programme, to nearly 6 million people around the world.

- Engaged with over 189,000 participants through the NT Learning events programme.

Current and upcoming tours from the National Theatre include: The Curious Incident of the Dog in the Night-Time and Jane Eyre touring the UK until September 2017; War Horse begins a second UK tour in September 2017 and Hedda Gabler begins a UK tour in October 2017. Visit nationaltheatre.org.uk for more.

Chichester Festival Theatre is one of the UK's flagship theatres, renowned for the exceptionally high standard of its productions as well as it's work with the community and young people. Situated in a cathedral city in West Sussex between the South Downs and the sea, the Festival Theatre's bold thrust stage design makes it one of England's most striking playhouses; a Studio Theatre, the Minerva Theatre, sits nearby.

The annual summer Festival season runs from April to November, during which productions originated at Chichester reach an audience of over 200,000. Year-round programming continues through the winter with the Theatre presenting high-class touring productions, as well as a traditional Christmas show mounted by the renowned Chichester Festival Youth Theatre.

Recent West End transfers from Chichester (as originating producer) include Half A Sixpence (Noël Coward Theatre), Young Chekhov (National Theatre), Running Wild (Regent's Park Open Air Theatre), Guys and Dolls (Savoy Theatre), Stevie (Hampstead Theatre), Taken at Midnight (Theatre Royal, Haymarket), Gypsy (Savoy Theatre), Private Lives (Gielgud Theatre) and Sweeny Todd (Adelphi Theatre). Christmas 2015 saw the television broadcast of Gypsy with Imelda Staunton, shown on BBC4. Filmed during its West End run at the Savoy Theatre, the broadcast was watched by over half a million viewers and is now available on DVD.

Rooted firmly in the community, the Theatre runs a Learning, Education and Participation (LEAP) programme that is a beacon of excellence and inspiration to its local audience, as well as being home to one of the country's largest youth theatres with over 750 members.

Daniel Evans and Rachel Tackley joined the organisations as Artistic Director and Executive Director respectively in the summer of 2016, appointed with a mandate to build on the success of the past and take the theatre into its next exciting chapter. Go to cft.org.uk.

Photo Credit: Johan Persson


          Rick Dildine to Become Artistic Director at Alabama Shakespeare Festival   

Rick Dildine, artistic and executive director of Shakespeare Festival St. Louis, will join Alabama Shakespeare Festival as Artistic Director. In his new role, Dildine will oversee an operation that produces 10 productions in two venues set in a 250-acre park with an annual budget of $8.1 million and more than 230 employees. He will assume his new responsibilities Aug. 1.

Dildine, ASF's fourth artistic director in 40 years, will be replacing Producing Artistic Director, Geoffrey Sherman, who retires this month after 12 years in that position. Once on board, Dildine will also help in the national search for the ASF's newly created position of Executive Director. The ASF is located in Montgomery, Alabama.

"St. Louis has been an incredibly wonderful home to me and a phenomenal place to make art, making this decision to depart even more difficult for me both on a professional and personal level," Dildine said. "The generous support and loyalty achieved on behalf of the Festival through the years is a testament to the passion this city has for theater and its effect on our lives, and I am honored to have been able to play a part in it."

A search committee appointed by the board will begin meeting immediately to identify Dildine's replacement. The committee's plan is to finalize the search by fall.

Since his arrival in 2009, Shakespeare Festival St. Louis has more than doubled its programming, increased attendance more than 55 percent, and garnered national exposure for its innovative programs and approach to theater making. Dildine directed two productions including Twelfth Night (2013) and A Midsummer Night's Dream (2016), and created the highly successful SHAKE38 and Shakespeare in the Streets programs. Under his tenure, the organization has received numerous awards including recognition as Arts Organization of the Year (2017) by the Missouri Arts Council, Excellence in the Arts Award (2015) from the Arts & Education Council of Greater St. Louis and the Exemplary Community Achievement Award (2012) by the Missouri Humanities Council. For six months in late 2014 through March of 2015, Dildine served as chief executive officer of Shakespeare & Co. in Lenox, MA, before returning to the Festival in St. Louis.

"Rick's innovative programming, leadership and financial acumen has catapulted the Festival into the top tier ranking of theater companies nationwide," said Penny Pennington, Board President of Shakespeare Festival St. Louis. "His ability to create art in the schools, in the streets and in the park reflects his devotion to our city and his need to continue to challenge us through Shakespeare's works. His work has provided us with a wonderful opportunity to attract the best of the best and find a candidate who can continue to build on this incredible foundation."

Recognized as a leader in civic engagement, Dildine was named 2014 "Theatre Artist of the Year" by the St. Louis Post-Dispatch, "40 Under 40" by the St. Louis Business Journal and recognized on the city's Power List of "100 People Who Are Reshaping the City." He has held leadership positions at About Face Theatre, Stephen Foster Theatre, and Brown University/Trinity Rep New Plays Festival under the direction of Pulitzer Prize winner Paula Vogel. Dildine has traveled on TCG delegations to Cuba and China and served on numerous grant panels including the National Endowment for the Arts. He has taught or served on staff for Brown University, Clark University, and Webster University, where he served as Director of the MFA Arts Management & Leadership program and currently teaches within its BFA Acting program. He is a graduate of Ouachita Baptist University and Brown University/Trinity Rep with an MFA in Acting and is a proud member of Actors' Equity Association and the Society of Directors and Choreographers.

Alabama Shakespeare Festival is the largest professional, producing theater in Alabama and one of the largest Shakespeare festivals in the world. Productions of Shakespeare are at the artistic core of the company, which also mounts Broadway musicals, children's productions, American classics and world premiers to round out its annual offerings. The ASF's $21.5 million Carolyn Blount Theatre complex houses the two theater venues (seating capacity of 792 and 262, respectively), production shops, rehearsal halls and administrative offices situated on an English-style grounds and lake that surround the building and make up the stunning core of the Wynton M. Blount Cultural Park. Founded in 1972, ASF is a member of the prestigious League of Resident Theatres (LORT), the largest professional theater association of its kind in the United States, with its 72 members located in every major market in the country, including 29 states and the District of Columbia. LORT theatres collectively issue more Equity contracts to actors than Broadway and commercial tours combined.


          Simple web site creation   
Path for simple website. I need to get a simple portfolio website up in the next couple of weeks. I'm not overly worried about the visual elements -- I can handle the photoshopping, layout and textual elements.

I really haven't done any serious web coding in the last ten years, though. I have some basic familiarity with HTML and modest programming experience, but that's pretty much it.

I've got personal domains registered and would like to start of with a very simple portfolio site that's mostly graphical but is able to scale a bit as I need -- eg, add a blog or webstore eventually.

I've played with wordpress a bit and found it incredibly frustrating.

Mostly I'm looking for software recommendations -- website builders or services.
          President Magufuli, ban sexual violence, not teenage mothers from school   

Tanzania’s President John Magufuli is facing widespread criticism from human rights organizations following comments he made last Thursday at a public rally that girls who become pregnant should not be allowed to return to school.

President Magufuli was quoted as saying:

"In my administration, as long as I am president ... no pregnant student will be allowed to return to school. We cannot allow this immoral behaviour to permeate our primary and secondary schools ... never.”

"After calculating some few mathematics she’d be asking the teacher in the classroom ‘let me go out and breastfeed my crying baby’... After getting pregnant, you are done! 

“If we were to allow the girls back to school, one day we would find all girls in Standard One going home to nurse their babies.”

These worrying statements were backed up this week by Tanzania’s Home Affairs Minister, Mr Mwigulu Nchemba, who warned civil society organisations advocating for teenage mothers’ education that they would be deregistered if they continued campaigning on this issue.

Tanzania's ban on pregnant girls attending state primary and secondary schools dates back to 1961, and according to a 2013 report by the Center for Reproductive Rights (CRR), more than 55,000 schoolgirls have been expelled from school over the last decade for being pregnant.

Although some more affluent families have been able to pay for their daughters to attend private school, the majority of girls have had to miss out on the rest of their education.

Civil society organizations including Equality Now argue that denying girls who have become mothers access to education is a violation of their human rights, and is a form of discrimination as highlighted by the United Nations Human Rights Council in their recent report: Realization of the equal enjoyment of the right to education by every girl.

The right to education plays a pivotal role in development, both of the individual and society. It opens up access to information on protection, opportunities and other fundamental rights, and is highly linked to personal, social and economic empowerment.

Barring teenage mothers from education not only perpetuates discriminatory gender norms, but is also an indication of government failures to address the root cause of widespread sexual violence against adolescent girls.

Efforts to eradicate violence against girls and women in Tanzania need to be increased, and laws against perpetrators of sexual violence have to be better enforced. More needs to be done also to alleviate the stigma and discrimination endured by pregnant girls and survivors of sexual violence and exploitation.

Girls’ human rights to health, life and right to equality and non-discrimination must be guaranteed by providing them with quality education, and to sexual and reproductive health care information, services and goods. 

The Tanzanian government and President John Magufuli should ensure that all school settings across the country are free from sexual violence and that holistic programming is in place to prevent and address sexual violence as outlined in the Global Guidance to Address School Related Gender Based Violence.

Description: https://ci6.googleusercontent.com/proxy/RnNZfQn2o2xpggJQqefCOervMbPIci5mujDPJnvl43kv6Rtxjyh5gHN_JKVzeU-aaGz3pePFgxfoAAtZJZNx8mveVTc-11j98EfuAJVcumUenA=s0-d-e1-ft#https://ssl.gstatic.com/ui/v1/icons/mail/images/cleardot.gifEducation is key to eliminating poverty and denial of education is counter to any proposals aiming to improve society. Around one in four females in Tanzania are illiterate and the country’s illiteracy rate rose by one per cent to reach 23 per cent in 2015. By only punishing pregnant girls and denying them their education, the government is penalizing them on the basis of gender and is curtailing their futures so they are likely to remain trapped in a cycle of poverty.

Providing access to child care for girls who become mothers should be a state priority, as should the provision of other vital support services so that they can return to school.  Of particular urgency is guaranteeing girls’ right to access post-rape healthcare information and services including those necessary to prevent pregnancy and sexually transmitted diseases, as well as ante-natal care.

President Magufuli’s comments go against the Tanzanian government's own policy and contradict the 2015 General Election campaign pledge of the ruling political party, Chama Cha Mapinduzi. They are also directly at odds with the commitments that Tanzania has already made by signing up to various regional and international pieces of legislation. These include the Maputo Protocol, which guarantees the rights of women and girls in Africa including their rights to education and training, and the Convention on Elimination of all forms of Discrimination against Women (CEDAW), and The African Charter on the Rights and Welfare of the Child, which clearly states that girls who get pregnant should be given an opportunity to access education.

People wanting to join the conversation on social media can use the hashtags #ArudiShule and #StopMagufuli, which are trending since last week. Many are urging President Magufuli to withdraw his damaging statements, lift the ban on teenage mothers accessing schools, and take all necessary steps to ensure the wellbeing and future prospects of all girls across Tanzania.

ENDS

Notes to Editor: For media enquiries and interview requests please contact Equality Now Media Relations Manager Tara Carey at tcarey@equalitynow.org; +44 (0)20 7304 6902; +44 (0)7971 556 340.

About Equality Now:

Equality Now is an international human rights organization that works to protect and promote the rights of women and girls around the world by combining grassroots activism with international, regional and national legal advocacy. Our international network of lawyers, activists, and supporters achieve legal and systemic change by holding governments responsible for enacting and enforcing laws and policies that end legal inequality, sex trafficking, sexual violence, and harmful practices such as child marriage and FGM. Equality Now is dedicated to creating a more just world where women and girls have equal rights under the law and full enjoyment of those rights. For details of our current campaigns, please visit www.equalitynow.org.

To follow and engage with us online go to: Twitter: @equalitynow. Facebook:  facebook.com/equalitynoworg Instagram:  https://www.instagram.com/equalitynoworg/?hl=en

Christa Stewart is Program Manager, End Sexual Violence, and Justice for Girls. She is a lawyer experienced in working with adolescent girls and on issues of human trafficking, sexual assault and immigration. Twiiter @c_stewart_esq

* THE VIEWS OF THE ABOVE ARTICLE ARE THOSE OF THE AUTHOR AND DO NOT NECESSARILY REFLECT THE VIEWS OF THE PAMBAZUKA NEWS EDITORIAL TEAM

* BROUGHT TO YOU BY PAMBAZUKA NEWS

* Please do not take Pambazuka for granted! Become a Friend of Pambazuka and make a donation NOW to help keep Pambazuka FREE and INDEPENDENT!

* Please send comments to [email=editor@pambazuka.org]editor[at]pambazuka[dot]org[/email] or comment online at Pambazuka News.

Issue Number: 
Article Image Caption | Source: 
Equality Now

          Platform Development - Tradeweb Markets LLC - Jersey City, NJ   
OO programming, generic programming using templates, C/C++ style memory/other resource management -- use of both C style raw pointers and higher level C++...
From Tradeweb - Mon, 12 Jun 2017 06:45:19 GMT - View all Jersey City, NJ jobs
          I don't know what to call this   

See the Code - See it Full Page - See Details

I just finished my software engineering study at the university of applied sciences and I wanted to make something weird, so there's that. I have no idea what to call this though.

This Pen uses: HTML, SCSS, JavaScript, and


          Comment on Jail Guards Caught Smuggling in Heroin, Impersonating Cops, Preventing Inmate Mail by Persephanie   
I believe they are doing what they can to keep the inmates safe as far as the your concern about them having no contact with family and friends, they can make phone calls have visits any day of the week and be emailed pictures... They are doing everything they can to try to keep this under control they are only human and as far as the men who were charged with crimes they are being held accountable and I believe it was a lesson for the caption and the other staff at the facility. I was an inmate for 7 months in 2016 and the programming and the staff helped me rehabilitate in more ways than one. Out of all the facilities I've been incarcerated, this was by far the best. The decisions of former employees may have been poor but the conditions and programming in impeccable.
          Director of Operations and Programming - Calgary - Jayman - Alberta   
A minimum of 7 years of event planning experience, with demonstrated results in. Recreation and lifestyle complex of over 40,000 square feet… and amazing...
From Jayman - Thu, 15 Jun 2017 18:02:29 GMT - View all Alberta jobs
          Software Engineer Intern - Zebo - Palo Alto, CA   
Internship is unpaid but we provide University credit. If you have excellent programming skills and a passion for building great products, we would like to meet...
From Indeed - Sun, 04 Jun 2017 08:09:17 GMT - View all Palo Alto, CA jobs
          Commentaires sur Sondage pour un concours de fin d’année… par read more   
Hi exceptional blog! Does running a blog such as this require a massive amount work? I've very little expertise in programming however I was hoping to start my own blog soon. Anyhow, should you have any suggestions or techniques for new blog owners please share. I know this is off subject nevertheless I simply had to ask. Thank you!
          “We need to ensure that older adults are centered in the LGBT movement.”   

We’re continuing our Pride Month series of interviews with staff from SAGE || Advocacy and Services for LGBT Elders. Today, we’re talking with Karalin Sprague, Manager of Lifelong Learning. Kara tells us about the exciting programming for LGBTQ older adults and allies happening at SAGE Centers around the city, and the most moving moments from Pride Month 2017.

What is your role with SAGE?
I’m the Manager of Lifelong Learning, which means that I oversee all of the programming related to art, culture, education, socialization and technology across SAGE’s five New York City sites. I have a bird’s eye view of our programs across the city, so.... Read More

          Apple WWDC 2017 Scholars: The Story and The Playground   
WWDC_Bash

Editor’s note: Earlier, Antoine Bellanger wrote us a guest post sharing his experience as a WWDC scholar, and interviewed several scholars. Jayven from our tutorial team, who is also a WWDC scholar this year, got a chance to talk to a number of scholars at WWDC17. I only started to learn programming when I attended university. Every time I read stories about these young developers, it’s always amazing to me what they have achieved at their age. Apple Scholars. They all have two things in common. A story. A playground. And they’re lit. Without further ado, let’s get to know […]

This article, Apple WWDC 2017 Scholars: The Story and The Playground, was originally published at AppCoda.


          CAD/CAM Programmer - Aluminum Mold & Pattern Ltd - Toronto, ON   
Automotive seating mould manufacturer has CAM programming position opening. Catia CAD and CAM modules used.... $20 - $22 an hour
From Indeed - Wed, 14 Jun 2017 15:37:35 GMT - View all Toronto, ON jobs
          Tool and Die Maker - Amphenol Canada Corp. - Toronto, ON   
Building moulds, dies &amp;assembly tooling. Trouble shooting of Moulds, Dies and Tooling. Designing and programming moulds, dies &amp; assembly tooling....
From Indeed - Tue, 13 Jun 2017 21:34:53 GMT - View all Toronto, ON jobs
          WebSphere Application Server V7 での JAX-WS 2.1 による WS-Addressing のサポート   
IBM WebSphere Application Server V7 には JAX-WS (Java API for XML-Based Web Services) 2.1 仕様のサポートが組み込まれています。JAX-WS 2.1 は、JAX-WS 2.0 仕様で提供されている機能をさまざまな新機能で拡張する JSR (Java Specification Request) 224 のメンテナンス・リリースです。これらの新機能の中で最も重要な機能としては、API (Application Programming Interface) での WS-Addressing (Web Services Addressing) のサポートが挙げられます。この記事では、新しく追加された WS-Addressing のサポートを使用する方法を説明するとともに、この新機能によって Web サービスの開発者がステートフルな Web サービスを容易に作成できるようになる仕組みについても解説します。
          New Programming Adapter: DIL48/QFP64-1.02 ZIF MSP430-4   
DIL48/QFP64-1.02 ZIF MSP430-4
Description: specialized adapter for TI (TMS) MSP430FR58xx/59xx devices in QFP64 package
operating (mechanical) life of ZIF socket - 10,000 actuations
supported from PG4UW software version 3.32w
made in Slovakia

ORD. NUMBER: 70-3388
          AER Garage Door Repair Valley Village   
Business Name : AER Garage Door Repair Valley Village Address : 11754 Riverside Dr, Valley Village, CA 91607 Phone : 818-280-8200 Web : http://www.aergaragedoorvalleyvilla... AER Garage Door Repair Valley Village establish in 2010 provide all the necessary garage door repair , maintenance , replacements : Broken springs , broken panels , cables repair , opener problems repair , new doors , remote programming , doors maintenance and a lot more !
          Price Drop: Blimp Code (Games)   

Blimp Code 1.6


Device: iOS Universal
Category: Games
Price: $1.99 -> Free, Version: 1.6 (iTunes)

Description:

Solve Puzzles by Writing Code

If you've never written a line of code in your life, here's your opportunity to learn something new.

If you're already a programmer, we've found that even highly experienced programmers get stuck on some of the trickiest challenges.

You'll be led through a series of tutorials with all the hints you need to complete the challenges. The challenges progress from easy to difficult. Don't be discouraged if you don't complete all the challenges right away. Take your time!

Important: Follow the tutorials carefully as every little bit of information will be essential for you to solve the puzzles!

Puzzles require learning and mastering a unique assembly-style programming language in order to capture, transmit, and modify a sequence of "air-balls" entering and leaving the blimp's machinery.

Save the blimps, save the world!

What's New

- 15 New advanced puzzles featuring advanced stack use, recursion, and interrupts.
- If you want to cheat there's now an in-app-purchase for that!
- Feature: "Show Example" shows example input to output balls for each puzzle.
- Optimized and enhanced tutorial text (getting you to the action sooner).

Blimp Code


          YOU should write an interpreter with Thorsten Ball   
Thorsten Ball has a thirst for knowledge, so one day he decided to make a new Programming Language. He went from 0 lines of code to a fully working interpreter written in Go for the "Monkey" Language. Check it out at https://interpreterbook.com!
          Hire a Virtual Assistant by lethopesfly   
This is a Data Entry Position and your daily duties will be: Tracking data and source documents. Prepare and sort source documents and interpret data to be entered,compiled, sorted and verified for accuracy... (Budget: $250 - $750 USD, Jobs: C Programming, MySQL, PHP, Software Testing, Website Management)
          programmation by smaylahn   
la creation des applicationes informatique (Budget: €250 - €750 EUR, Jobs: C Programming, C++ Programming, MySQL, Visual Basic, Windows Desktop)
          Hire a Linux Developer with knowledge about kernel level rootkits functionality by aalesh28   
Embedded C based project on a 32 bit Linux processor. Someone with the knowledge of how the ROP (return oriented programming) is done and shellcodes. Not a major project, have done most of the work, just need help with a little bit of trouble shooting... (Budget: $30 - $250 USD, Jobs: C Programming, Embedded Software, Linux, Software Development, Ubuntu)
          key より New PIECE. 2013.3.7. へのコメント   
Hi excellent blog! Does running a blog such as this require a great deal of work? I have no understanding of computer programming but I was hoping to start my own blog soon. Anyway, should you have any recommendations or tips for new blog owners please share. I know this is off subject however I simply needed to ask. Thank you!
          A Major Loss for Words   
Rafu Staff and Wire Service Reports The television landscape in Los Angeles will take a major cultural hit on Saturday, when KSCI Channel 18 replaces nearly all of its foreign-language programming with sponsored infomercials in English. The decision means the local multi-language Asian community will soon be losing a valuable TV voice in Los Angeles, [...]
          Basics of Cheap Windows Hosting    
Putting a persons company on the web where a person use web - Affordable Windows hosting group, is a very vital decision to make. A person may not be provided the perfect plan that a persons company actually needs by the business, which is cheap windows hosting a persons company on the web. There are some items to be considered while a person are hunting for a reputable business that can be a host to a persons company in order to help a person on the web front.

Windows or Linux Web Affordable Windows Hosting.

The host states an operating system is needed, that is the operating system an individuals server may use. If a person are using windows operating system, a person actually don't need a windows affordable hosting. In addition, a person don't require it if a person are making a persons pages at the front. They add advantages like .asp and .net-programming abilities if they use windows web server Affordable Windows Hosting and it shows itself to be actually powerful. Listen carefully, taking advice from the one who is completing this job for a person and creating all pages.

Preferred Affordable Windows hosting services:

Try to look for the Affordable Windows Hosting Company that offers a person both services and quality in the method a person need. Some of the affordable products that top the charts are:

Decreased fee or free domain registration - It reflects the professional specifics if the domain is the name of the business. Many hosts will give this style of facility for free and also it will make sure that all updating and needed renewals are completed on time.

Secure server sales on their server - Security is very vital as a person make or accept payments on Internet; also a person send a lot of personal information, which should not be shared, so security is necessary. It should provide SSL in its basic rate.

PHP and mySQL support - Database support and PHP are the tools that are very powerful. A person get it if a person choose UNIX server. It runs programs for a person; make forums, content management and more. It also includes e-commerce.

Design Services at lower prices - Professional web designing is also provided for customers at a good rebate. A person should most assuredly take advantage. A Professional website gives a good impression on a customer so they feel at ease about all this.

Web-mail services and POP Email Boxes - Pop email boxes show themselves to be vital so get that advantage and a person can give all a persons staff and all offices an individual email id. There is a service called a web mail service which offers a person the power to enter a persons email account from any location.

A person can come across a cheap windows hosting source that recommends all the traits that a person want within a persons means. It just takes a modest assessment shopping to happen along with the greatest company Affordable Windows Hosting for a persons professional web site.

Basics of Cheap Windows Hosting
          The Laura Longley Show: Blue Heron Wisdom Radio with Host Laura Longley - with guest Mimi Pettibone aka The Dream Detective   
GuestMimi Pettibone, aka 'The Dream Detective', has been fascinated with dreams, spirituality, and the mystical realm since she was a small child. Her knowledge and understanding of symbolism, metaphor, and spiritual psychology contribute to all of her work. Her background includes many techniques for working with dreams, as well as trainings in NLP Neuro-Linguistic Programming, Hypnotherapy, Voice Dialogue and other modalities of working with consciousness. She has also come to realize that sh ...
          Hourly Paid Teacher in Software Applications Specialist - ACS/AEC - LEA.8F - Vanier College - Vanier, QC   
INTENSIVE DAY PROGRAM – MEQ 12 FOURTH SEMESTER In the following disciplines: 420 Computer Science 420-HSS-VA C++ Programming (90 hours) 420-HST-VA Visual...
From Vanier College - Tue, 27 Jun 2017 17:09:43 GMT - View all Vanier, QC jobs
          Instructor Therapist- Autism Intervention Program - Hands TheFamilyHelpNetwork.ca/Mains LeReseaudaideauxfamilles.ca - Moose Factory, ON   
Hands TheFamilyHelpNetwork.ca requires an Instructor Therapist to provide direct programming and service in Intensive Behavioural Intervention for children... $19.74 - $24.65 an hour
From Indeed - Wed, 22 Mar 2017 16:15:23 GMT - View all Moose Factory, ON jobs
          Research Computer Programmer   
DC-Washington, This is a full-time mid- to senior staff position and is located in Washington D.C. The successful candidate will participate in aviation analysis-focused computer programming. The programming will support research on trajectory-based air traffic performance measures and global benchmarking of new Next Gen capabilities. Responsibilities will include: Conduct of system level analysis and formulatio
          PHPRunner 9.8 B29055   
Database driven PHP web site with no programming
          FPGA High Level Design Developer - Intel - Toronto, ON   
Full programming experience such as C/C++/Java Inside this Business Group. As part of Intel, we will continue to apply Moore's Law to drive the future of field...
From Intel - Tue, 27 Jun 2017 10:28:58 GMT - View all Toronto, ON jobs
          ICA at VCU will Open in Richmond Spring 2018   

Virginia Commonwealth University today announced its new Institute for Contemporary Art (ICA) will open in Spring 2018. The new opening date is based on a revised schedule for the completion of construction and the subsequent adjustment of the internal climate before art can be installed. The ICA is already active in Richmond and on VCU's campus through programs, faculty and student collaboration, and artistic commissions, and will continue to engage the VCU and Richmond communities through special programs prior to the opening.

The new contemporary art institution is designed by Steven Holl Architects and located at the intersection of Richmond's historic Belvidere and Broad streets, one of the city's busiest junctures. The ICA provides a striking new gateway for Richmond, with dual entrances opening to the city's arts district on one side and VCU's Monroe Park campus on the other. Free of charge to all visitors, the ICA will be a significant new cultural resource for Richmond and VCU, in direct dialogue with VCU School of the Arts, the #1-ranked public graduate school of art and design in the U.S. The ICA will offer a vital new dimension to a premier urban research university, and contribute to a national and international cultural dialogue. With nearly 41,000 square feet of flexible space, including an inviting 33-foot high central forum, the non-collecting ICA will feature a dynamic slate of changing exhibitions, performances, films, and interdisciplinary programs. The Markel Center's fluid spaces are designed to support the diverse practices characteristic of the art of today, mirroring VCU's interdisciplinary approach and supporting the varied needs of contemporary art and audiences.

The ICA's inaugural exhibition, Declaration, will explore contemporary art's power to catalyze change, and will feature painting, sculpture, multimedia works, site-specific installations, and time-based performances by emerging and established artists. Featuring new work by artists from around the globe, including Amos Paul Kennedy, Jr., Marinella Senatore, Paul Rucker, and Cassils, the exhibition will also include artists from Richmond's vibrant arts community, such as VCUarts Associate Professor Hope Ginsburg and VCU alum Levester Williams.

"While we are eager to unveil the Markel Center to the community this spring, we are committed to ensuring that contemporary art thrives beyond an institution's bounds," said ICA Director Lisa Freiman. "We are all working hard to realize the vision and mission of the ICA, and will continue to mount dynamic programs for our VCU and Richmond communities while we plan for our launch."

"The ICA is exemplary of VCU's dedication to the arts, and to the university's belief in the importance of contemporary art and creative discourse in an engaging education," said VCU President Michael Rao. "We are looking forward to experiencing its full program this spring, and cementing Richmond as one of the world's important contemporary art centers."

About the ICA's Design

The open design of the ICA features a series of dynamic exhibition and programming spaces across its three levels that allow for creative opportunities that engage the unfixed and multidirectional nature of contemporary art. The glass walls and windows create continuity between the interior and exterior spaces of the building. On the first floor, a 4,000-square-foot gallery and large café, bar, and retail space radiate from the ICA's central forum and frame an outdoor garden, which Steven Holl describes as the "Thinking Field," that will be used for social gatherings, temporary art installations, and public programs. The first floor also features a state-of-the-art 240-seat auditorium for film screenings, live performances, lectures, and community programs.

The second floor includes two forking galleries and an adaptable learning lab for interactive educational engagement that will be open to the public. It also includes an accessible terrace-one of the four green roofs-that will be programmed with art works and available for special events. The soaring 33-foot-high gallery on the ICA's third floor will feature large-scale installations and experimental projects. The third floor also houses one of the administrative suites and the boardroom. Additional staff offices are located in the building's lower level, which also includes a lobby for visitors, art storage and preparation facilities, a fabrication workshop, a green room, the catering kitchen, and general storage.

In keeping with VCU's master sustainability plan, the ICA's design incorporates state of the art technologies and environmentally conscious design elements, and makes use of numerous natural resources. The pre-weathered, satin-finish zinc exterior of the Markel Center, which houses the ICA, includes interspersed clear- and translucent-glass walls and skylights that infuse the building with natural light and lessen the reliance on nonrenewable energy. These include the use of geothermal wells to provide heating and cooling energy for the building, and four green roofs to absorb storm water, offset carbon emissions, and maximize insulation. Native plantings include wood oats, little bluestem, Pennsylvania sedge, and goldenrod. Building materials include Virginia bluestone and custom glass cavity walls, designed to exhaust heat in the summer and harness it in the winter. The project is designed to meet LEED Gold Certification standards.

About the ICA's Capital Campaign and Endowment

The ICA has raised more than $36 million in private funds to date toward its goal of $41 million for construction. An endowment campaign is also ongoing. The ICA is the largest privately funded arts project in VCU's history and is supported by generous leadership gifts from ICA Campaign Co-Chairs Steve and Kathie Markel, and Pam and Bill Royall. Additional major donors include: John David and Meg Newell Gottwald, George W. and Helen H. B. Logan, True and Charlie Luck, Markel Corporation, Abby W. Moore, NewMarket Corporation, The Mary Morton Parsons Foundation, Patsy K. and Hunter R. Pettus, Jr., and Carolyn and John Snow.

About Steven Holl Architects

Steven Holl Architects has realized architectural works nationally and overseas, with extensive experience in the arts (including museum, gallery, and exhibition design), campus and educational facilities, residential work, and master planning. Steven Holl Architects is a 40-person architecture and urban design office founded in 1976, and working globally as one office from two locations, New York City and Beijing. Steven Holl leads the office with partners Chris McVoy and Noah Yaffe. Most recently completed are the Reid Building at the Glasgow School of Art (Glasgow, U.K.), which opened in April 2014; Campbell Sports Center at Columbia University (New York, NY), which was completed in March 2013; and the Daeyang Gallery and House (Seoul, Korea) which opened in June 2012. Steven Holl Architects currently has eight projects under construction, including the John F. Kennedy Center Expansion in Washington, D.C.; the Glassell School of Art at the Museum of Fine Arts Houston; the Lewis Center for the Arts at Princeton University; and the Institute for Contemporary Art at Virginia Commonwealth University in Richmond, VA.

About VCU and VCUarts

Virginia Commonwealth University is a major, urban public research university with a diverse student body recognized for its commitment to community engagement, with national and international rankings in sponsored research. Dedicated to advancing scholarship and creative expression, VCU fosters interdisciplinary learning and collaboration. Located on two downtown campuses in Richmond and a satellite campus in Qatar, VCU enrolls more than 31,000 students in 225 certificate and degree programs in the arts, sciences, and humanities. With a distinguished faculty of professional artists and 16 departments, including Craft/Material Studies, Fashion Design and Merchandising, Dance and Choreography, Graphic Design, Music, Painting and Printmaking, Photography and Film, Sculpture + Extended Media, and Theatre, VCUarts has been the top-ranked public university visual arts and design graduate program in the country for nine years, according to U.S. News & World Report. Its campus in Qatar provides students and faculty with a direct tie to the Middle East, a region of increasing significance in the contemporary art world. For more information on VCUarts, please visit: arts.vcu.edu

About the Institute for Contemporary Art

The Institute for Contemporary Art (ICA) at Virginia Commonwealth University (VCU) is a non-collecting institution that will showcase a fresh slate of changing exhibitions and programs ranging from innovative visual and performing arts to various forms of design and film. Part exhibition and performance space, part laboratory and incubator, the ICA will be a place to explore new ideas, providing an open forum for dialogue and collaboration across the region and the world. Mirroring the increasing emphasis on cross-disciplinary studies across VCU, the ICA will create a new environment for artists and scholars from around the world to test unconventional and challenging ideas. As a university-wide resource, it will engage an international network of contemporary artists and organizations while encouraging collaborations between audiences and contemporary artists and with VCU departments, faculty, students, and the Richmond community. The ICA will be an agile, responsive institution that offers a broad range of artistic perspectives from across the world with the goal of questioning assumptions and encouraging critical discourse. To date, the ICA has raised $36 million towards its capital campaign. An endowment campaign is ongoing. Additional information on opening programming will be available in the coming months. For more information on the ICA, please visit: ica.vcu.edu.


          C++ Developer - Distributed Computing - Morgan Stanley - Montréal, QC   
Comfortable programming in a Linux environment, familiar with ksh and bash. Morgan Stanley is a global financial services firm and a market leader in investment...
From Morgan Stanley - Wed, 28 Jun 2017 00:14:01 GMT - View all Montréal, QC jobs
          Getting introduced to AJAX   
Asynchronous JavaScript + XML, is not a new technology or a new programming language It is a term coined in 2005 by Jesse James Garrett, which describes a “new” approach to using a number of existing technologies together, including: HTML or XHTML, Cascading Style Sheets, JavaScript, The Document Object Model, XML, XSLT, and the XMLHttpRequest object. It is a new technique for creating better, faster, and more interactive web applications When these technologies are combined in the AJAX model, web ... Continue Reading...
          REVIEW: Youn Sun Nah on the opening night of the 2017 Montreal Jazz Festival    
Receiving a standing ovation: L-R: Jamie Saft
Youn Sun Nah , Lindsey Horner, Clifton Hyde, Dan Rieser
Youn Sun Nah 
(Monument National Ludger-Duvernay, Montreal. 28 June 2017. Opening night of  the Montreal Int Jazz Festival.  Review by Sebastian Scotney)

There are, of course, all kinds of bigger, glitzier events that could have been used to usher in the start of a monster jazz festival like Montreal's.  Indeed, many huge concerts are still to happen in the next ten days, but this opening concert of the 2017 festival at the Monument National set the right tone in many ways.

Youn Sun Nah was performing at the festival for the third time, and appeared sincerely emotional as she remembered the much smaller room where she had made her festival debut, and from which she has moved onwards and upwards to last night's concert at the 800-seater Salle Ludger-Duvernay, opened in 1893, a gem of a venue.

That progression to bigger halls mirrors her growth not just in renown, particularly in France, but also in her increasing heft and communicative power as a performer. In her spoken introductions she is always, endearingly, the ingénue, but her voice and presence are those of the seasoned, self-aware artist. It also reflects well on the programming team taking the longer view with artists. Last night's set had an astonishing variety to it, with a great band of versatile musicians delighting in visiting several stylistic domains. For Youn Sun Nah, the capacity to dig deeper into American repertoire like Lou Reed's Teach the Gifted Children   or - even more bold and sassy - Jockey Full Of Bourbon by Tom Waits (not on the album) does seem to have given her a promising new direction.

Her new album She Moves On (ACT), recorded at Sear Sound near Hell's Kitchen in New York, is such a balanced and integrated piece of work, it was fascinating to see how this band (with a different bassist and guitarist and minus the string quartet which appears on just one track) would adapt to the live context. One point where they really excelled was in the extended free introduction to Fairport Convention's A Sailor's Life. Sometimes, with an American band as fundamentally tight as this, complete freedom and the ditching of all pulses and bar-lines can seem like a self-indulgence. Here it was a very strong moment; it seemed to draw the audience in to the narrative.

Jamie Saft played piano and Rhodes from the start, but kept the delight of his Hammond playing in reserve until nearly the end of the set. It was great playing, and well worth waiting for. Dan Rieser was flawless, and bassist Lindsey Horner derived a surprisingly full and rich sound out of a travelling "peanut" bass. Mississippi- raised Clifton Hyde on guitar (replacing Marc Ribot on the album) is an astonishingly versatile player.

The audience absolutely loved the show, and showed it, which allowed Youn Sun Nah to tease with a cat-and-mouse game involving 'last' songs. The audience was up on its feet after the first 'last' song and them again after the next 'last' song'. It then was left to Clinton Hyde and Youn Sun Nah to give the audience their last, quiet goodnight, a gentle song by Paul (Stookey) of Peter Paul and Mary entitled No Other Name. It  was the perfect closer, and bodes well for the bolder and brasher things to come, as Montreal celebrates 375 years and (locals are telling me the upstart nation's birthday is FAR less important...) Canada celebrates 150 years of existence.

LINK : Youn Sun Nah Tour Dates

          Sr. Systems Programming Analyst (NJ-MD-GA-KY) - UNITED PARCEL SERVICE - Mahwah, NJ   
Our Systems Programmers design and deploy infrastructure to the highest standards. As a UPS Systems Programmer, your skills will be put to the test working with...
From UPS - Thu, 29 Jun 2017 14:18:53 GMT - View all Mahwah, NJ jobs
          CNC Laser Turret Programmer (Branch Medical Group) - Globus Medical - Audubon, PA   
Position Summary- This position will be responsible for programming the following: CNC Laser(s), and CNC Turret Press(s). Responsibilities: Reviews special
From Globus Medical - Thu, 16 Mar 2017 22:44:49 GMT - View all Audubon, PA jobs
          Manager, Laboratory - Precision Castparts Corp. - Toronto, OH   
Provide input to the programmers and Toronto JADC representative on programming/reporting requirements for STAR databases....
From Precision Castparts Corp. - Wed, 21 Jun 2017 16:47:25 GMT - View all Toronto, OH jobs
          Athletic Resort Destination LifeTime Celebrates Opening in Fort Washington   

Athletic Resort Destination Life Time Celebrates Opening in Fort Washington Nearly 800 jobs coming to region, including all-star cast of performers to lead exclusive programming at healthy living, healthy aging, healthy destinations in Fort Washington, King of Prussia and Ardmore. Life Time®, the nation’s only Healthy Way of Life lifestyle company and brand, today announced […]

The post Athletic Resort Destination LifeTime Celebrates Opening in Fort Washington appeared first on Live Trading News.


          Gianandrea Noseda Withdraws from D.C. Concerts to Recover from Surgery   

National Symphony Orchestra (NSO) Music Director Designate Gianandrea Noseda has been forced to withdraw from upcoming concerts with the NSO as he recovers from surgery.

This includes a program at Wolf Trap National Park for the Performing Arts on July 28 and a free public performance on the National Mall on July 29, the latter of which will be postponed. National Dance Day, also slated for July 29, will now take place at the Kennedy Center. Details regarding all local performances are provided on page 2.

On June 26, Noseda suffered a herniated disc. Surgery to remove the hernia was successfully performed on June 29. Noseda is now recovering at his home in Torino and will continue to do so on the orders of Prof. Michele Naddeo, the doctor who performed the surgery. Prof. Naddeo has indicated that the recovery is already moving along very well and the prognosis is for a full recovery. The following cancellations announced by Maestro Noseda are his first cancellations in 20 years.

From the desk of Gianandrea Noseda:

Dear Friends and Colleagues,

First of all, thank you so much for all of the love and support I have received from my many friends and colleagues around the world.

I am saddened to have to cancel all of my performances until the middle of August. However, Lucia and I have decided to follow very carefully the advice of Prof. Naddeo and that it would be best to take this time for me to make a full and complete recovery so I am physically prepared for the Teatro Regio Torino's historic residency at the Edinburgh International Festival in the second half of August and to start my new position as music director of the National Symphony Orchestra at the Kennedy Center in Washington, D.C.

I cherish my relationships with the White Nights Festival in St. Petersburg, the Verbier Festival, the Ravinia Festival, and the Mostly Mozart Festival and look forward to returning to those festivals in the coming seasons. I was very much looking forward to my debut at Wolf Trap with the National Symphony Orchestra as well as my inaugural concert as music director of the National Symphony Orchestra on the National Mall in Washington, D.C. next month. Together with my colleagues in Washington, D.C. we will present a special free public concert at a later date.

Once again, Lucia and I are grateful to all of our friends and colleagues all over the world and look forward to seeing you again soon. In the interim, I wish you all a wonderful summer of music and cannot wait to make music with all of you very soon.

With deep gratitude and respect,

Gianandrea Noseda

Maestro Noseda was also scheduled to begin his music directorship on July 28 at Wolf Trap National Park for the Performing Arts, the summer home of the National Symphony since 1971. The performance, which features Orff's Carmina Burana and Korean pianist Seong-Jin Cho in Beethoven's "Emperor" Concerto, will continue as scheduled, and a replacement conductor will be announced at a later date.

National Dance Day will now take place at the Kennedy Center on July 29 beginning at 2 p.m. and will feature special guest dancers, interactive dance lessons, and performances in a wide variety of dance styles, as well as the official National Dance Day routine for this year's event, led by a well-known dance star, to be announced. This performance coincides with the Kennedy Center Millennium Stage, the Center's free, daily performance series. At 7:30 p.m., Dancing Under the Stars begins with a beginner-level swing dance lesson by Gottaswing, followed by two hours of dancing with The Tom Cunningham Orchestra. All events are free and open to the public. Further information regarding the day and programming will be announced at a later date.

For more information about the NSO, visit nationalsymphony.org. For more information about the Kennedy Center, visit kennedy-center.org.


          SQL Server Developer and DBA / Request Technology - Craig Johnson / Pembroke Pines, FL   
Request Technology - Craig Johnson/Pembroke Pines, FL

Prestigious Enterprise Company is currently seeking a SQL Server Developer with DBA skills. Candidate is responsible for providing support, performance tuning and design consultation for enterprise database applications. Candidate will partner with the development teams throughout the application life cycle to ensure the database is optimized ensuring maximum application performance and availability. The individual will partner with the system DBA's ensuring that the database environment is stable, reliable, robust and kept current in regards to the database and patching levels.

Responsibilities:

Implement and maintain the database design including physical and logical data models.

Advanced SQL, T-SQL programming skills with ability to write, debug and tune procedures, functions and ETL packages.

Tune database queries for optimal performance.

Work collaboratively with application development teams and business to better understand overall application needs and make recommendations accordingly.

Partner with project teams and interact with customers to find solutions for projects and operational issues for existing and proposed databases environments.

Identify, analyze and solve problems related to database, applications or reporting in a thorough, timely manner.

Develop and document standards, policies, procedures and key performance metrics that support the continued improvement of IT services.

Assist developers with all the database activities.

Monitor application related jobs and data replication activities.

Perform code reviews and SQL code deployments.

Assist QA Teams in Unit and Stress testing operations.

Anticipate and devise possible solutions to application and database-related problems.

Recommend and maintain SQL Server configurations for both production and development environments.

Assist system DBA team by deploying SQL Server upgrades and service packs.

Assist system DBA team by performing backup, recovery and archival tasks on databases management systems.

Participate in On-Call rotation for critical production support.

Perform all routine scheduled SQL Server and database maintenance.

Qualifications:

Minimum of 5 years of experience working as a database developer/architect in a SQL Server environment.

Minimum of 3 years of experience working as a database administrator.

Minimum of 3 years of experience working with large, complex databases in a large enterprise environment

Possess a solid understanding of the relationships of architecture components within technology infrastructure.

Expertise with the following technologies: SQL 2008/2012, SSIS, SSAS, SSRS.

Experience working with .Net, C# technologies.

Knowledge and experience working with source code version control systems.

Excellent Data Modeling experience.

Strong understanding of coding methods and best practices.

MCDBA or MCSA database development certification a plus.

Familiarity with other database technologies a plus.

Excellent communication skills a must.

Ability to provide 24x7 support and participate in an on-call rotation

Employment Type: Permanent
Work Hours: Full Time

Pay: $100,000 to $115,000 USD
Pay Period: Annual
Other Pay Info: Bonus

Apply To Job
          SQL Server Developer DBA / Request Technology - Anthony Honquest / Pembroke Pines, FL   
Request Technology - Anthony Honquest/Pembroke Pines, FL

Pembroke Pines, FL

Prestigious Enterprise Company is currently seeking a SQL Server Developer/DBA. Individual is responsible for providing support, performance tuning and design consultation for enterprise database applications. Individual will partner with the development teams throughout the application life cycle to ensure the database is optimized ensuring maximum application performance and availability. The individual will partner with the system DBA's ensuring that the database environment is stable, reliable, robust and kept current in regards to the database and patching levels.

Responsibilities:

Implement and maintain the database design including physical and logical data models.

Advanced SQL, T-SQL programming skills with ability to write, debug and tune procedures, functions and ETL packages.

Tune database queries for optimal performance.

Work collaboratively with application development teams and business to better understand overall application needs and make recommendations accordingly.

Partner with project teams and interact with customers to find solutions for projects and operational issues for existing and proposed databases environments.

Identify, analyze and solve problems related to database, applications or reporting in a thorough, timely manner.

Develop and document standards, policies, procedures and key performance metrics that support the continued improvement of IT services.

Assist developers with all the database activities.

Monitor application related jobs and data replication activities.

Perform code reviews and SQL code deployments.

Assist QA Teams in Unit and Stress testing operations.

Anticipate and devise possible solutions to application and database-related problems.

Recommend and maintain SQL Server configurations for both production and development environments.

Assist system DBA team by deploying SQL Server upgrades and service packs.

Assist system DBA team by performing backup, recovery and archival tasks on databases management systems.

Participate in On-Call rotation for critical production support.

Perform all routine scheduled SQL Server and database maintenance.

Background Required:

Minimum of 5 years of experience working as a database developer/architect in a SQL Server environment.

Minimum of 3 years of experience working as a database administrator.

Minimum of 3 years of experience working with large, complex databases in a large enterprise environment

Possess a solid understanding of the relationships of architecture components within technology infrastructure.

Expertise with the following technologies: SQL 2008/2012, SSIS, SSAS, SSRS.

Experience working with .Net, C# technologies.

Knowledge and experience working with source code version control systems.

Excellent Data Modeling experience.

Strong understanding of coding methods and best practices.

MCDBA or MCSA database development certification a plus.

Familiarity with other database technologies a plus.

Excellent communication skills a must.

Ability to provide 24×7 support and participate in an on-call rotation

Employment Type: Permanent
Work Hours: Full Time

Pay: $100,000 to $115,000 USD
Pay Period: Annual
Other Pay Info: Bonus

Apply To Job
          Introduction of Java and Various Java Platform Editions (INfocampus hr)   
Java is a programming dialect. It engages designers to make PC rules using English based commands, as opposed to writing in numeric codes. It's known as an "irregular state" tongue since it can be examined and created easily by individuals.
          Instructor Therapist- Autism Intervention Program - Hands TheFamilyHelpNetwork.ca/Mains LeReseaudaideauxfamilles.ca - Moose Factory, ON   
Hands TheFamilyHelpNetwork.ca requires an Instructor Therapist to provide direct programming and service in Intensive Behavioural Intervention for children... $19.74 - $24.65 an hour
From Indeed - Wed, 22 Mar 2017 16:15:23 GMT - View all Moose Factory, ON jobs
          One Count Kickout – Miami Heat   
Follow The One Count Kickout on Twitter @OneCountKickout Like the One Count Kickout on Facebook Wrestlemania is almost impossible to put into words.  There is so much to take in.  The spectacle, the matches, the crowd, the atmosphere.  Ultimately, it is WWE hitting the reset button and initiating a new year of programming. Wrestlemania 27 […]
          Hourly Paid Teacher in Software Applications Specialist - ACS/AEC - LEA.8F - Vanier College - Vanier, QC   
INTENSIVE DAY PROGRAM – MEQ 12 FOURTH SEMESTER In the following disciplines: 420 Computer Science 420-HSS-VA C++ Programming (90 hours) 420-HST-VA Visual
From Vanier College - Tue, 27 Jun 2017 17:09:43 GMT - View all Vanier, QC jobs
          Director of Operations and Programming - Calgary - Jayman - Alberta   
Strong technical computer acumen including Microsoft Office products, awareness of. A minimum of 7 years of event planning experience, with demonstrated results...
From Jayman - Thu, 15 Jun 2017 18:02:29 GMT - View all Alberta jobs
          FPGA High Level Design Developer - Intel - Toronto, ON   
Full programming experience such as C/C++/Java Inside this Business Group. As part of Intel, we will continue to apply Moore's Law to drive the future of field...
From Intel - Tue, 27 Jun 2017 10:28:58 GMT - View all Toronto, ON jobs
          Unstoppable You – How To Tap Into Your Awesome Learning Power   

You're reading Unstoppable You – How To Tap Into Your Awesome Learning Power, originally posted on Pick the Brain | Motivation and Self Improvement. If you're enjoying this, please visit our site for more inspirational articles.

Learning is like breathing.

Something we do because we are alive. Something we usually take for granted. But should we?

We were primed for learning in the womb – every hour our brains added 250,000 neurons so that we could process the world when we arrived.

Then, as a child, our default programming (let’s call it Learning 1.0) shaped the basic structure and wiring of our brains as we learned through trial and error and imitation.

We upgraded our learning capability again when, through experiences in school we upgraded to Learning 2.0 – internalizing society’s knowledge and more structured learning approaches (e.g., how to study). Once on our own, we cobbled together our own way of dealing with life’s challenges at work, at home, as a citizen.

We crafted a personalized approach – enter the next version of our internal learning software -- Learning 3.0.

But Learning 1.0, 2.0 and 3.0 are not good enough today.

This world is changing very rapidly and presenting us with many complex conditions and challenges that require a new learning paradigm.Of course, there is an increasing array of support we can access – in apps, online courses, blogs, or by cruising Google, Cable TV, social media (caveat: beware of biases!), and more.

We truly live in an accelerating and often confusing knowledge era. And it will only get more complex and diverse as information expands and technology provides new tools for learning, outsourcing our memories, and connecting with others in novel ways.

It’s a new learning landscape, and we need a new way of thinking about and approaching learning. I call this new way, Learning 4.0.

It’s 21st Century learning that you do on your own and with others. It’s a framework to use when you help others learn – your children, people you lead, people who want you to share your expertise for any reason.

And, Learning 4.0 is a framework to guide your learning in the moment (out of curiosity or opportunism), extracting learning from past experience (think of the learning locked up in those experiences you regret or remember with pride), and when you have a learning goal that may take some time to reach.

Learning 4.0 builds on the strengths of 1.0, 2.0 and 3.0. But there is a lot more. Think about yourself as a 4.0 Learner. For example, with Learning 4.0 you use and expand your imaginative capabilities – your ability to dream, create a virtual reality future, and then to draw on the energy of that imagined reality to help you move into a desirable future (Here’s a simple tip: before you dive into any learning experience do a 3-minute trip into your future. See and feel yourself with a new competency in a situation that matters to you. Make this vision as visceral – physical and mental – as you can. It will then act like a magnet, pulling you toward the future you desire).

Learning 4.0 also engages your whole brain/body – reflecting new insights from neuroscience, enlisting your conscious and unconscious learning processes, and tuning your body to support you with positive learning chemicals, brain waves, and optimal neural activity as you learn.

A third way Learning 4.0 works is by equipping you for the increasingly manipulative information world. Everybody wants your attention, information and money. But with Learning 4.0, you approach information in a smart way – detecting bias and manipulation and deciding what to accept and reject or ignore.

Another quality that defines you as a 4.0 learner is resource versatility.

As a 4.0 learner, you aren’t fazed by the variety of resource and learning formats out there. You know how to get the information you need from reading, listening, online apps and courses, meetings and conversations, even games and simulations… and more.

There are other important qualities in 4.0 Learning. And learners can tap into these super-learning qualities by developing skills in seven important 4.0 Learning practice areas:

  1. Hear the Call. 4.0 learners detect learning opportunities long before others. They are tuned to learn, so they hear calls to learn from the world around and inside them before these calls become crises and problems.
  2. Create Future Pull. 4.0 learners imagine compelling futures that then pull them in the direction of their goals. Think about it: when you have an image of where you want to be, it seems the world is filled with help to get there. Some call this the law of attraction, others call it serendipity. It is actually imagination and your unconscious learning processes at work.
  3. Search Far and Wide. You can’t deal with the crowded information world alone. You need help in the form of search engines and other scanners to find what you need. 4.0 learners know how to access services and people who can help find what they need.
  4. Connect the Dots. It may not be possible to develop fixed learning plans, but 4.0 learners know how to chart a learning path and equip themselves for the journey -- balancing a commitment to the vision with new insights that might alter the course.
  5. Mine for Gold. 4.0 learners find the gold in any learning resource – knowing that learning is a partnership with the learning tools they use and that, as the learner in charge, they determine what to pay attention to and ultimately use.\
  6. Learn to Last. 4.0 learners know how to turn ideas and short term memories into lasting knowledge, skills, new ways of thinking, and even creative ideas.
  7. Transfer to Life. 4.0 learners take powerful steps to change their own habits (i.e., they go beyond New Year’s resolutions) and to influence the environment around them so that they can bring learning to life at home and at work.

It’s time for a new consciousness about learning – for a new mindset and practices. 21st Century challenges demand and invite us into a new learning framework. Fortunately, new knowledge about how we learn -- plus a plethora of new tools to help us learn – make it possible to launch a new version of our internal learning software: to upgrade to Learning 4.0.

Learning is no longer a process to take for granted.

----------------------------------------------------------------------------------------------------------
Pat McLagan
is a global leader in the learning and development field with top awards from major adult learning associations. Her new book, Unstoppable You: Adopt the New Learning 4.0 Mindset and Change Your Life is available on Amazon. You can test your 4.0 capabilities at www.learning40.com/assess. And you can build your 4.0 capabilities little by little every day with the iTunes app, Brighter Every Day. 

You've read Unstoppable You – How To Tap Into Your Awesome Learning Power, originally posted on Pick the Brain | Motivation and Self Improvement. If you've enjoyed this, please visit our site for more inspirational articles.


          Hourly Paid Teacher in Software Applications Specialist - ACS/AEC - LEA.8F - Vanier College - Vanier, QC   
INTENSIVE DAY PROGRAM – MEQ 12 FOURTH SEMESTER In the following disciplines: 420 Computer Science 420-HSS-VA C++ Programming (90 hours) 420-HST-VA Visual
From Vanier College - Tue, 27 Jun 2017 17:09:43 GMT - View all Vanier, QC jobs
          Test Engineer - Automation   
CO-Greenwood Village, Our client, a major Media Communications company at the forefront of technology, is seeking a Development Test Engineer with Strong Automation Experience. Required Skills: . Test Engineer with 5+ years of professional automation testing experience . Automation experience with tools like Selenium is required . Must have hands-on programming experience using Go, Ruby, Python or Java) . Should have e
          1.0 FTE Electrical Building System Technician - Rainy River District School Board - Fort Frances, ON   
Minimum of two (2) years experience installing, troubleshooting, repairing and programming various control systems and instrumentation such as process control... $30.67 an hour
From Indeed - Tue, 25 Apr 2017 16:13:03 GMT - View all Fort Frances, ON jobs
          What will be the values of select inputs, carry-in input and result of operation if the following micro-operations are performed? – IGNOU MCA Assignment 2014 – 15   
MASTER OF COMPUTER APPLICATIONS Course Code : MCS-012 Course Title : Computer Organisation and Assembly Language Programming Assignment Number : MCA (2)/012/Assign /2014-15 Maximum Marks : 100 Weightage : 25% Assume that you have a machine as shown in section 3.2.2 of Block 3 having the micro-operations as given in Figure 10 on page 62… Read More »
          Phillip K Smith III: Lucid Stead (Joshua Tree, California 2013)   

PHILLIP K SMITH III : Lucid Stead

On the weekend of October 12th in Joshua Tree, California, artist Phillip K Smith III revealed his light based project, Lucid Stead. What was expected to be a two day event for a handful of viewers, turned into over 400 people making the journey over two weekends. People as far away as New York City and Canada traveled to the California High Desert to experience it. Numerous media sources have asked to do cover stories on the work. Thousands of photos professional and amateur, were taken, posted and shared across blogs and social media sights. In just over 30 days, Lucid Stead officially became a phenomenon.

Composed of mirror, LED lighting, custom built electronic equipment and Arduino programming amalgamated with a preexisting structure, this architectural intervention, at first, seems alien in context to the bleak landscape. Upon further viewing, Lucid Stead imposes a delirious, almost spiritual experience. Like the enveloping vista that changes hue as time passes, Lucid Stead transforms. In daylight the 70 year old homesteader shack, that serves as the armature of the piece, reflects and refracts the surrounding terrain like a mirage or an hallucination. As the sun tucks behind the mountains, slowly shifting, geometric color fields emerge until they hover in the desolate darkness. This transformation also adapts personal perception, realigning one’s sensory priorities. A heightened awareness of solitude and the measured pace of the environment is realized.

Smith states, "Lucid Stead is about tapping into the quiet and the pace of change of the desert. When you slow down and align yourself with the desert, the project begins to unfold before you. It reveals that it is about light and shadow, reflected light, projected light, and change."

Phillip K Smith III received his Bachelor of Fine Arts and Bachelor of Architecture at the Rhode Island School of Design. He draws inspiration from the reductive logic of minimalism and the optic sensation of California's Light and Space movement. Smith’s innovation and exploitation of new technologies keeps these ideologies current. He was honored as the 2010 Artist in Residence at the Palm Springs Art Museum and was included in the exhibition, Smooth Operations: Substance and Surface in Southern California Art, alongside artists such as Peter Alexander, Larry Bell, DeWain Valentine, and Craig Kauffman at the Museum of Art and History in Lancaster CA. He has been asked to return to the museum for a solo exhibition opening in January 2014. He has been commissioned to create over a dozen monumental art works and his light based sculptures are collected Nationwide. Phillip will open a solo exhibition of lightworks at royale projects : contemporary art in Palm Desert on November 29 2013. His work will be featured at UNTITLED art fair in Miami opening December 1st.

for more info visit: lucidstead.com

contact: royaleprojects.com

video courtesy of: Phillip K Smith, III & royale projects : contemporary art

Cast: royale projects

Tags: phillip k smith III, lucid stead, joshua tree, california, desert, light, color, contemporary art, coachella valley, artist, royale projects, palm desert, palm springs, #lucidstead and #pks3


          Program Assistant - Bayfield Historical Society Archives & Heritage Centre - Bayfield, ON   
Knowledge of public education and programming, social media promotion and experience in a museum setting are an asset.... $13 an hour
From Indeed - Thu, 06 Apr 2017 18:50:03 GMT - View all Bayfield, ON jobs
          Clinical Director/Clinical Social Worker - Saratoga Center for the Family - Saratoga Springs, NY   
Oversight and development of the Saratoga Center for the Family's clinical programming at the Center, in the Saratoga County Community and in Saratoga County...
From Indeed - Wed, 07 Jun 2017 22:57:04 GMT - View all Saratoga Springs, NY jobs
          More DISH News: DISH Launches EVOLVE, Transforms In-Room Hotel TV   

Preview image

EVOLVE from DISH transforms in-room hotel entertainment; combines streaming apps, linear television and casting into seamless, easy-to-manage solution
  • 4K-capable "set-back" box powered by Android TV
  • Property Management Solution (PMS) integration offers UI personalization, guest security 
  • Works with SMARTBOX, DISH’s all-in-one commercial property television solution


"DISH is transforming the hotel industry’s ability to provide guests with premium in-room television entertainment. Today at HITEC Toronto, DISH unveiled EVOLVE®, a 4K-capable Android TVTM set-back box that seamlessly integrates streaming apps, live linear programming and casting into one customizable solution. EVOLVE offers guests a more intuitive way to engage with content from their mobile devices using their room’s TV.

Preview image

“Today’s guest is used to a TV experience at home that combines their favorite streaming apps with linear, high-definition programming,” said Alistair Chatwin, director of DISH Business. “With EVOLVE and SMARTBOX, all hotel operators can now deliver the intuitive and streamlined entertainment that guests have come to expect at home, while reducing costs, increasing performance and saving space across their properties.”

Preview imagePreview image

Powered by SMARTBOX, DISH’s revolutionary headend video distribution platform for commercial applications, EVOLVE is designed to work with any hotel wiring scenario, as well as existing or upgraded infrastructures. It supports video delivery over QAM or IP, and internet connectivity over DOCSIS, Ethernet or Wi-Fi (2.4/5GHz).

EVOLVE Features

Preview image

  • Google Play Store – An Android TV-based platform, EVOLVE gives guests access to thousands of Android TV applications from the Google Play Store, including music, movies and games.
  • Chromecast built-in – Cast content from apps like Sling TV and YouTube, as well as music, photos and videos, from mobile devices to hotel room TVs without ever having to enter credentials.
  • Advanced program guide – With an interactive program guide featuring genre filters and 23 hours of future programming data, EVOLVE improves the way guests discover, navigate and watch live TV in their hotel rooms.
  • Channel preview – When in the program guide, hover over any title to view a pop-up window that displays live video from the channel. This allows guests to view exactly what’s on before selecting.
  • Configuration tool – Customize EVOLVE’s UI with branding, welcome channels and pre-loaded apps.
  • PMS integration – Provide guests with personalized messages on the home screen and automatically clear their personal information from EVOLVE as they check out.
  • Bluetooth LE with audio support – Watch TV with Bluetooth headsets to eliminate disruptions when multiple people are staying in the same room.
  • 4K capability – EVOLVE will continue providing guests with a premium television viewing experience as hotels deliver more 4K offerings.

Preview image

To learn more, visit www.dish.com/evolve."

About DISH
DISH Network Corp. (NASDAQ:DISH), through its subsidiaries, provides approximately 13.528 million pay-TV subscribers, as of March 31, 2017, with the highest-quality programming and technology with the most choices at the best value. DISH offers a high definition line-up with more than 200 national HD channels, the most international channels and award-winning HD and DVR technology. DISH Network Corporation is a Fortune 200 company. Visit www.dish.com.

Subscribe to DISH email alerts: http://about.dish.com/alerts

Follow @DISHNews on Twitter: http://www.twitter.com/DISHNews

          Win a Week in Lisbon, Portugal   
When you make your gift of any amount to NHPR by midnight on Sunday, May 27, you'll be entered to win a trip for two to Lisbon, Portugal and a six-night stay at the Hotel Mundial! Here's how to give and enter: Web: Make a gift online here , or click the support link at the top of the page. Mobile: Text-to-Give ( complete instructions ) Make a one-time $10 contribution to support the news, information and programming you love-- directly from your mobile device! Directions: Text the letters N-H-P-R to number 85944 and reply YES to the confirmation text you receive. That's all there is to it. Message and data rates may apply. Call: Make your gift by phone from our membership hotline: 1-800-639-4131 The Portugal trip package includes a gift certificate for two round-trip tickets from Boston, MA to Lisbon, Portugal courtesy of Azores Express and SATA Airlines and six nights at the Hotel Mundial. The certificate is non-refundable, and certain blackout dates do apply. Read the full rules and
          [Guru] Database programming for Quality trackin   
From Guru // Description: We are looking for database development to track our quality and customer complaint process. We wi...

          CenturyLink Unveils Pricing For New Streaming Video Service -    


Centurylink has taken the wraps off the company's new $45 over the top streaming video service. The service, creatively named CenturyLink Stream, is now available as a paid beta, though users can test the service out starting this week via a free seven day trial. The base $45 package provides access to 48 live TV channels, and includes access to a cloud DVR that holds up to 50 hours of programming. The service allows up to three simultaneous streams, and will be offered to users both inside and outside of CenturyLink's traditional broadband footprint.

Users that currently have, or sign up for CenturyLink's existing broadband services, will nab a $5 monthly discount.

Fine print on the company's website notes that live streaming for local broadcast networks of ABC and NBC -- and the availability of certain regional sports networks -- are restricted to select regions. Those interested can check out the full channel lineup here. Showtime is being sold as a $9 per month add on, as is a number of additional channel packages ranging from $5 to $10 more per month.

Device support includes Android and iOS devices, PC/Macs, Roku devices, and a CenturyLink branded media player (4K capable set top with with 8GB of storage and dual-band Wi-Fi) the company is charging $90 for.

The company has been testing this service for a while, and has repeatedly hinted that it may ultimately replace its existing Prism IPTV platform with this service, given the notably lower costs of deployment.

"At this point we ll continue serving the markets that we re in and we think over time the over the top product might replace the Prism product over time," CenturyLink CFO Stewart Ewing told investors last year. CenturyLink CEO Glenn Post has mirrored those comments, stating that "with over-the-top product, we don t have to make a truck roll," and the company has "really deemphasized the Prism product because of the margin issue."

There's more detail on CenturyLink's new $45 streaming video service over at the company's website, and in the video embedded below.

»youtu.be/EwhYDlO36xc

read comment(s)



          Engineer, Software III - Mason, OH - Quest Diagnostics - Mason, OH   
Proficiency in Enterprise Java programming plus one or more modern programming languages such as Ruby, Python, or C#....
From Quest Diagnostics - Thu, 25 May 2017 18:08:53 GMT - View all Mason, OH jobs
          Morphy Richards 162010 Pour Over Filter Coffee Machine, Brushed Stainless Steel   
Morphy Richards 162010 Pour Over Filter Coffee Machine, Brushed Stainless Steel

Morphy Richards 162010 Pour Over Filter Coffee Machine, Brushed Stainless Steel

New to the world of coffee 'Pour Over' filtering, Morphy have combined the superior taste of pour over coffee, with the ease of a programmable machine. It's ideal for those who enjoy the true taste of coffee, but want it delivered conveniently. Pour Over Shower Head Pour over shower head evenly disperses the water over the coffee grounds, ensuring they are fully covered and maximum flavour can be extracted from the coffee. Reusable Cupcake Filter The unique cupcake shaped filter allows even coverage of the coffee thereby avoiding over and under-extraction of coffee which is commonly found when using cone shaped filters. The cupcake filter can be used with or without additional disposable filter papers. Versatile and Easy Programming The machine includes a programmable timer so you can pre-set the time you wish your coffee to be brewed. It also includes a coffee strength selector so you can tailor the strength specifically to suit your taste. 1.8L Capacity Brew from 1-12 cups at a time, perfect whether preparing 1 morning coffee or entertaining. The machine will also automatically adjust to the optimum brew strength when brewing small volumes (1-4 cups). Keep Warm Function After your machine has brewed a fresh carafe of coffee, it will keep it warm for up to 30 minutes. Key features Coffee type: Ground coffee Bar pressure: N/A Water tank capacity: 1.8L (12 cups) Filter type: Reusable Delay timer: Yes Integrated grinder: No Coffee strength selector: Yes Warranty: 2 years (subject to online registration, click here)


          Episode 13: PHP Internals, Service-orientated Architecture and Language Wars   

Some episodes of this show are brought to you after more beers than others. This is one of those episodes where its more, so if you don’t like swearing and listening to a slightly confused Bristolian ramble about points he occasionally forgets then you might want to skip this one.

Regardless Ben, Zack K. and Phil discuss the difference between PHP’s organisational structure and lack of BDFL with that of Rails, or Linux. We then discuss service-orientated architecture a little and move onto how you should not box yourself into a single programming language - on your CV or in general as a programmer.


          Episode 7: Web Sockets Are Fast   

Chris Boden joins us to talk about a Ratchet and React. The conversation is basically Ben and Phil asking a bunch of questions about how Ratchet works, pretending we know what is going on while Chris uses lots of words like “concurrency” and “non-blocking”.

We decide that PHP is web-scale, event-driven programming is not just for NodeJS hipsters, we all take the “Are You a Brogrammer” test and Michael Wales crashes the show half way through like a ninja.


          Comment on Frustrated by Shirley   
I feel your pain re the cable company. I just renegotiated my contract for another 2 years. I was able to get a reduced rate, but they have realigned the programming so I don't receive some of my favorite channels. I believe they hope no one will notice when their contract expires and will continue paying the increased rate especially if you are enrolled in auto pay. I envy your quilting progress.
          By: Programming note: WordAds | Rob Pegoraro   
[...] have profited from them was to hit 25,000 page views in a month, a mark I only came close to when I announced my departure from the Post. (Third-party ads remain forbidden here; see VentureBeat’s writeup of the WordAds news for [...]
          Associate Director Clinical Programming - GCE Solutions - Home Based   
Thoroughly knowledgeable in CDISC standards (STDM and ADaM). Responsible for overseeing programmers in both full service and internal projects....
From GCE Solutions - Sat, 27 May 2017 10:38:37 GMT - View all Home Based jobs
          Site News: Popular Posts for This Week (06.30.2017)   

Popular posts from PHPDeveloper.org for the past week:


          SitePoint PHP Blog: Poka Yoke – Saving Projects with Hyper-Defensive Programming   

The SitePoint PHP blog has a new tutorial posted that introduces the idea of "Poka Yoke" - basically defensive programming - and how to apply it in your own development processes.

When working in a medium to large team on the same codebase, it can sometimes become hard to understand each other’s code and how to use it. [...] It can be quite hard to remember how particular classes were intended to work, both on their own and in combination with each other. At that point, it becomes easy to accidentally introduce side effects or bugs without realizing it.

These mistakes might get caught in quality assurance, but there’s a realistic chance they might slip through. And even if they get caught, it can take a lot of time to send the code back and get it fixed. So how can we prevent this? Enter “Poka Yoke”.

The article then introduces the basic ideas of "poka yoke" and the two main parts: mistake prevention and mistake detection. It then gets more practical and suggests some PHP-specific things that can be done to prevent mistakes such as:

  • the use of type declarations
  • using value objects
  • making use of effective validation
  • returning null objects

For each there's a brief explaination and some sample code to help make the example more practical.


          FPGA Design Engineer (Markham) - Evertz - Markham, ON   
Lower level C/C++ embedded programming targeting ARM, Zynq, Microblaze or Nios, or FPGA fabric through HLS. Complete FPGA development cycle using Altera Quartus...
From Evertz - Fri, 21 Apr 2017 06:23:51 GMT - View all Markham, ON jobs
          FPGA Design Engineer (Markham, ON - Entry, Intermediate & Sr.) - Evertz Microsystems Limited - Markham, ON   
Lower level C/C++ embedded programming targeting ARM, Zynq, Microblaze or Nios, or FPGA fabric through HLS. Complete FPGA development cycle using Altera Quartus...
From Evertz Microsystems Limited - Sat, 08 Apr 2017 05:55:27 GMT - View all Markham, ON jobs
          FPGA Design Engineer - Evertz - Burlington, ON   
Lower level C/C++ embedded programming targeting ARM, Zynq, Microblaze or Nios, or FPGA fabric through HLS. Complete FPGA development cycle using Altera Quartus...
From Evertz - Thu, 15 Jun 2017 08:27:39 GMT - View all Burlington, ON jobs
          FPGA Design Engineer (Entry, Intermediate & Sr.) - Evertz Microsystems Limited - Burlington, ON   
Lower level C/C++ embedded programming targeting ARM, Zynq, Microblaze or Nios, or FPGA fabric through HLS. Complete FPGA development cycle using Altera Quartus...
From Evertz Microsystems Limited - Sat, 17 Jun 2017 10:06:34 GMT - View all Burlington, ON jobs
          ELECTRICAL PROGRAMMING CONTROLS ENGINEER - Environmental Solutions Group - Fort Payne, AL   
Shares best practices with other employees across the business. Demonstrates a commitment to the entire business and is supportive of all initiatives (company...
From Environmental Solutions Group - Wed, 31 May 2017 05:48:32 GMT - View all Fort Payne, AL jobs
          Artistry Auditions for "Candide" and "Follies"    
ArtistryDevon CoxEmail/contacthttp://www.artistrymn.org

Artistry announces auditions for Leonard Bernstein's Candide (In Concert) and Follies

Leonard Bernstein's Candide (in Concert)

Music by: Leonard Bernstein
Lyrics by: John Latouche, Dorothy Parker, Lillian Hellman, Stephen Sondheim, John Mauceri & John Wells

Director: Melissa Hart

Music Director: Anita Ruth

Follies

Music and Lyrics by: Stephen Sondheim
Book by: James Goldman

Director: Benjamin McGovern

Associate Director: Melissa Hart

Music Director: Anita Ruth

Auditions will be held in the rehearsal hall at Bloomington Center for the Arts on July 14 and 15 from 4:00-9:00pm. Callbacks for Candide will take place the evening of July 16. Callbacks for Follies will take place on July 31. 

Auditions are by appointment only. Appointments are made on a first come, first served basis. To make an appointment for an audition, please email audition@artistrymn.org. In the body of the email, please include your:

  • full name
  • email address
  • primary contact phone number
  • digital headshot and resume [.pdf format preferred for resume]
  • preferred audition day (July 14 or July 15)

A staff member will contact you to schedule an audition. Note that our audition slots fill up quickly. You will be notified if audition slots are full.

Please prepare 32 bars of music in a legit musical theater style appropriate to the shows, along with a hard copy of headshot and resume. 

Rehearsals for Candide will begin in late January or early February.  The production runs in The Schneider Theater at the Bloomington Center for the Arts from March 1 - 3, 2018.

Rehearsals for Follies will begin on Tuesday, March 6. Rehearsals will take place Tuesday - Friday evenings and Saturday and Sunday during the day. The production runs in The Schneider Theater at the Bloomington Center for the Arts from April 14 - May 6, 2018.

Thank you for your consideration. We hope to see you there.

---

All roles in both shows are currently open.

About Artistry:

Artistry is an independent arts organization based in the city-owned Bloomington Center for the Arts. We produce arts experiences of exceptional quality in an accessible, welcoming setting, serving a regional audience of more than 80,000. “Welcoming and nurturing talent” is a key part of our mission. Toward that end, we provide opportunities for early-career artists to learn and grow, and for established artists to work in new ways. 

About the Directors:

Since becoming the Producing Artistic Director of Artistry Theater in October 2015, Benjamin has directed the critically acclaimed Wit and The Baker’s Wife. Other recent directing credits include And So It Goes and The Hothouse (Dark and Stormy Productions); Next to Normal (Yellow Tree Theatre); An Iliad (Guthrie Studio); and Camino Real and The Skin of Our Teeth  (Girl Friday Productions.) From 2007 through 2011, Ben was the Associate Director of Studio Programming at the Guthrie Theater, where he also directed many productions. Before his tenure at the Guthrie, Ben worked with Theatre de la Jeune Lune for over 15 years, and also served as Artistic/Managing Director of the Bryant-Lake Bowl.

About the shows:

Hailed as one of the best musical theater scores ever written, Bernstein’s Candide is inspired by Voltaire’s satirical novella of the same name. This theatrical operetta is told with a twinkling wink of the eye and follows the optimistic young Candide on a remarkable journey to reunite with his wife-to-be. In an Artistry Theater first, we present a beloved musical in concert form, allowing audiences to savor the epic beauty of Bernstein’s score. Candide will be performed by ten exceptional theater artists sharing the stage with our critically acclaimed 16-piece orchestra. Conducted by Music Director Anita Ruth, this magical evening of music and story is a rare treat for musical theater lovers. 

Follies features one of the most haunting and memorable scores by musical theater pioneer Stephen Sondheim. With hits such as “Losing my Mind” and “Broadway Baby,” it begs the eternal question: how do we reconcile our past with our present?  The year is 1971, and the Weismann Theater, once home to the iconic Weismann Follies, is set to be torn down. At a reunion of its former stars – a single night filled with nostalgia, champagne, and secrets – we see the bittersweet, long-lasting marriages of two couples held to task. Follies invites us all to take a closer look at how beautiful a life, long lived, can truly be.

Friday, July 14MenWomenPaidColor inclusiveAuditions(952)563-8564
Manual_Expiration: 
Monday, July 17, 2017
          Ka Auditron Ba - The Final Conflict   

Back in October of last year I was in New York and had the pleasure of meeting King Koncepts at his record store, Good Records. We chatted about music and he mentioned that Karma was working on releasing some old late 90's Kemetic Suns music. Fast forward to last week and I received an email from Karma introducing himself and letting me know about the music he posted on his Tumbler. Karma picks up where Koncepts left off when he posted The Bombshelter album back in 2009. I'm not going to try and summarize any of this of, instead I urge you to take some time and read through the detailed posts from Karma and listen to the unreleased Ka Auditron Ba (Karmachi & Hypnotic) album.

I'd like to thank Karma for reaching out to me and allowing me to post this on my site. The insight he and Koncepts provide is rarely seen in underground hip hop and is greatly appreciated.

 When To Walk Away Pt. 1

Preview to The Long Goodbye

***This blog was originally  written by Koncepts and featured as documentary comment on Cocaine Blunts appearing in 2009. Since then the trolls have made it less inspiring for the homie Noz to keep the blog up so I thought I would recreate it here for the sake of background***
 “Fundamentals consisted of me – Koncepts – and Karma. We met each other at Berkeley High, 1992. All I remember was being introduced to this dude who was into rap, and had a little bit of game to him - he knew all the different cats around school, kept good weed, knew how to talk to girls. Quickly we started hanging out, going to parties. We formed The Fundamentals in early ‘93, long before the crew Kemetic Suns came about. At that time, the crew we made was called “Ascension”: in addition to us, we brought in a group called Hijinx (Peekaboo and Embassy), rappers Malignant and Level Z, and Anthony/Ayentee. Before I got with Karma, I was in an awful band that played funk-rock-jazz-rap-fusion a la Alphabet Soup or the Mo'Fessionals – interesting sidenote, playwright Itamar Moses played keyboards in that group. But I wanted to do something that was more straight up Hip-Hop. I was DJing already and I played the guitar. I fell off with the guitar lessons but started making primitive beats. Hanging out at Anthony’s house in north-west Berkeley I started to get hip to funk and latin and freakier jazz music all courtesy of his father’s record collection. 


We all hung out and got busy together, either at Anthony’s house or at my house. Anthony’s house was like a constant spot – there would be any number of kids there, from the graf crew DOA down to West Side Berkeley dudes, friends of his dad, relatives. I was granted use of a narrow boiler room underneath my mom’s house – the “Bomb Shelter” – to record in, and all of the material featured was made there. The beats here were made either on an Akai S-01 (a cheap version of the 950) and a Roland R8 Human Rhythm Composer, or the Ensoniq ASR-10, which I stuck with. Kids would come through, I would throw together a beat or have one I had already worked up, and they would record. Anthony, who made beats as well, occasionally helped out engineering things. I’d do arrangements, hooks, whatever. I wanted people to write songs, not just lay down rhymes, so I tried to focus their talents and that’s how a lot of this stuff came to be. A lot of guys didn’t have any idea how to write songs – like, verse/hook/bridge, or whatever. Some dudes just wanted to spit for like 6 minutes. Off the head. It was a mess.


Most of us were from Berkeley or Oakland. Karma spent some time up in Sacramento early on. Malignant had one foot out in Richmond I think. Around the beginning of 1994 I moved to the Mission neighborhood in San Francisco to go live with my father, but continued attending Berkeley High and hanging out with the crew every day. It was a regular thing to go from school to my mom’s basement where the makeshift studio was, record until 7 or 8, ride the bus back into San Francisco and wash up somewhere around 10 at my dad’s apartment. Peek lived out by Eclipse, in the Union City area, and they were friends, so that’s how we got down with the Mixed Practice crew. Eclipse tells me now that he got real tight when Peek played him some of my stuff, like “who is this other young dude out here with beats??” Karma’s brother Wayne knew Corey/BFAP from the Mystik Journeymen, so we got down with them around ’94 or so, but I think they probably saw us as like, young’uns in the game. We met Kirby around then as well, up at UC Berkeley at KALX – Karma had gone up there with BFAP from the Journeymen. While BFAP was kind of cool on the kid, it was obvious he had incredible talent. Kirby, originally from East Oakland, had spent many years in Stockton prior to coming to Berkeley… had kind of a checkered past, but it turned out he and Karma knew some folks in common from up that way. We would hang out and freestyle in his dorm room but we hadn’t really clicked up in a formal way yet, like we would later.

image

Even though our style was more on the “backpack”/”houser” thing, a lot of the cats in the crew had street ties, we just didn’t really put it out there like that. It was more a thing you wanted to get away from, if you had ever been close enough to see it. The one exception was The Mental Patients – featured here on “Mental Anxieties” – who were some real street cats from South Berkeley, North Oakland, and East Oakland. But they’d come through, we’d smoke, lay down some music, no drama ever. They weren’t really a part of the crew per se but they showed love, would share smoke or even muscle if it was needed (which, on a couple of occasions, it was). Good dudes. Any time there was beef you had an assemblage of dudes from West Side and South Side Berkeley as well as North Oakland and parts of the east as well. We rolled deep.

image

The Ascension crew only lasted but so long, though, and at a certain point, friendly competition turned into beef. Dudes started talking behind each others’ backs, trying to create little allegiances and whatever… just childish stuff but you know we were, at the time, anywhere from 14-18 years old. Embassy and Karma, long rivals in the cipher, came to blows and everyone went their separate ways. I spent several months recording my own material, thinking I’d record my own demo/album, maybe sell it like the Journeymen and Mixed Practice and the other guys I was meeting around the scene at that time. That stuff never got released anywhere, with only one track turning up on 30 Days; much of it is featured here.

image
In the summer of 1995, Karma and I were both working in San Francisco. He was interning at Polygram - Polygram had an office in San Francisco! We patched up and started working on what would become 30 Days & A Plane Ticket, our first “real” tape – the title owing to the fact that I was moving to New York City 30 days from when we started. Karma’s style, originally an old school, laid back flow, and at one point a bone of contention amongst the more east coast-influenced crew, had developed into a this tripped out, cerebral scattershot of politics, hood slang, conspiracy theories, and 5% math. A cat he rolled with called Bay-Bay came up with the name Kemetic Suns. At that time, though, it was basically just a loose affiliation of folks we rolled with, some of whom didn’t make music at all. It was just a crew in the loosest sense. Kirby was down at that point, but I don’t recall meeting Hypnotic (another crew member) until 1996 or so, beyond the point at which this comp comes to an end.
image 
Honestly I don’t know what people will think of this stuff. I’m opening myself up which is always a risk. I think we had some talent. We never made a huge mark, despite being really prolific – due mostly to my ability to record. I had the good fortune to hold onto most of my old sessions. I’m sure there’s a ton of amazing stuff out there that has disappeared… I’ve certainly been met with that response as I’ve sought out material by other groups of the time. We wore our influences on our sleeves – but as kids, that’s just part of developing your own style. Back then, it wasn’t about features, or placements, or even tape sales really – just a bunch of cats doing music. That’s what the underground tape thing was really about. I can think of no better way to illustrate that.”

The Bombshelter Download


When To Walk Away Pt. 2

Preview to The Long Goodbye 

For a very long time my identity and self perspective was shaped by being a member of a family that made music. Had our parents been born in the Carribean in the 60′s and repatriated to the UK, we probably would have been Cymande. Had it been London in the late 40′s we might have been Pink Floyd. I have heard arguments that place us around the world and at different movements. As it shaped out, we were birthed into the 70′s and grew up in the 80′s in the east bay region of the San Francisco Bay Area. In particular, we all cut our teeth in the “small island in the sea of night” known as Berkeley. In 1995 we started our collective and independent label we called Kemetic Suns Massive.

image
There was a time to that time in particular that I would be hard pressed to try to recreate with words. As much as I pride myself on my ability to write into existence, I don’t think I could accurately give the feeling or emotional connection we had to what we were doing. There was different a zeitgeist of sorts as it was the mid-1990s and hip hop was becoming a billion dollar way of telling young people what to do. Perhaps it was the influence of Apple vs Wintel happening in our backyard of Silicon Valley. Maybe there was a factor around welfare reform, new banking models and a sense that another gold rush had come to San Francisco. It could be the influence of self determined cultural giants such as MC Hammer, Too Short, E-40 and Mac Dre who were uncompromising in their independence and standards.
I don’t have the bandwidth or desire to try to explain what brought us to the music or together. Many of these thoughts have laid hidden from me for decades by my own doing. I think my brother does a much better job of describing us here:

Bomb Shelter
 
Then there was also the concept of newly emerging technologies such as samplers, sequencers and non-lineal audio recording. That and the fact that as teenager I stumbled into being an active member of something that would later become called the Internet as well as progenitor of social media. Do not take my word for anything. There are far better curators involved:

It's Cheaper Than A CD

In terms of a business model we were decidedly clear that we would do everything in house. EVERY THING. Tapes, cds, vinyl, t-shirts. Production, engineering, management, promotion. Our greatest asset was each other. I treated the collective like my martial arts gym (which I mistakenly left in pursuit of a full time music career) in that training each other on every aspect made us well rounded, disciplined and allowed us to bring in new skills. The majority of the good work is based on our willingness to skip past barriers in terms of booking, promotion and retail:



From 1995 to 1998 we made 15 different projects ranging from EP to LPs to even putting out one of the first audio books for spoken word and poetry. I can’t speak for anyone else but I actually thought we were going to change the world. Given that our model was more of a social enterprise than a record label or entertainment company. Many of our members were previously homeless, from foster homes and/or faced with tons of barriers toward economic independence. My father, who was and will always be the bare minimum of excellence I strive for, ran a non profit that provided legal services to the poor who couldn’t afford to fight unlawful evictions, custody battles and discrimination. Without explicitly knowing we were into job training, Koncepts and I were adamant that these roles at House Kemetic Suns become employment. 
In 1997, Kirby got an opportunity to study abroad in DC at Howard. He would ride the train to Harlem and record with Koncepts, which later became Konceptual Dominance.


During that time, myself, Hypnotic and Per Aa were doing shows all over northern and central California. Literally from as far as Humbolt to San Luis Obisbo. Initially I only had the Fundamentals material I could perform and Hypnotic had his guest appearances as as he worked on his album. When all of the Suns met up in winter 1997, Koncepts played us Flawless Execution.


As soon as I heard it I knew what it was: Konceptual Dominance. In a time when we could hear everyone else punching in every bar, these two were going for 16 bars with flurries full of flow, punchline, presence and brilliant topics. I knew this was going to be a game changer. To be fair all we did was game changers, whether or not it was quality. Innovation and newness led the day. In response, Hypnotic pulled out the dusty tape of 8-track mix downs of the routines he and I were doing when we ran out of material on stage. I had slices of dub tracks and science fiction movie soundtracks as the thumbnails of beats we were rapping over. The crew loved it and named us Ka Auditron Ba. We were given the mandate to finish our project to release it after Konceptual Dominance and set up for the Kemetic Suns album. Ka Auditron Ba worked for the next year to finish our project called The Final Conflict. 3 label deals, 4 tours, 21 tracks and it was never released as promised. Somewhere in there I just walked away. 

For the few souls who are clever enough to see me on the street and figure out who I am, the question is always the same:

1) Why was the Auditrons never released?

2) What happened to the Kemetic Suns?

As 2017 is here and I do away with old things, avoiding answering these questions is one of those things I will let go. The answers in part III


When To Walk Away Pt.3

Preview to The Long Goodbye
“I’m an A-U-D-I-O”


There was a friendly competition we all adhered to when we started. Ultimately it was about the four of us: me, Koncepts, Kirby and Hypnotic being able to freestyle against each other for hours. I mean HOURS. At that time we thought we were okay, retrospect made me realize we were pretty high level. Much of the energy of that competition played out in the dynamics we had with one another outside of the music. Kirby was the master of partnership, I understood project management, Koncepts was our in house technical and Hypnotic did our sales. We were a much larger collective once, at one time being 15 people deep if you counted the affiliates in New York and Texas as well as the younger cats we were mentoring. There is also an argument in there about how influential and selfless cats like Bas1, Eclipse427 (Walt Liquor), Peekaboo and Infamous were so they could be Kemetic Suns. Plus there is a whole other tangent on how strong our ties were to MURS.
Quite accidently, Kirby and Koncepts together were very good as ambassadors. They travelled a lot, they showed up to events and they were able to get our sound into the heads of real decision makers who made sure our records ended up on mix shows, college radio and features. This is part of the reason Konceptual Dominance made so much sense. On the opposite tip, Hypnotic and I were doing shows and selling merchandise direct to customers (fans). I had a pretty high ethical standard which I realize now was a serious handicap for our business in terms of being in the music industry. Other groups could trash the stage, steal from the bar, go over their time or intimidate the promoter into moving them up on the lineup. I never wanted to get too involved in that type of grimy dealings because it was dumb logic to me – if we were going to go that route, forget the music and let’s go back to the streets.

That was another issue we were confronting. Many of the people rapping at the time all came from middle class backgrounds and had a parachute lined up for them afterwards. Koncepts and I tried to address that on Stop The World (the song itself). Where as many crews were diverse economically and ethnically, we were diverse economically but most of our members were two steps from the streets. Meaning we had convinced them to let go of their old hustles in lieu of legitimate enterprises that would be promoted by House Kemetic Suns. It was always a struggle. We didn’t always win. As the founder of the collective, I had the tendency to be the loudest voice in the room even if I actually wanted a democracy. In fact I remember always talking about being the bigger person and breaking up some many beefs. Then one night in winter of 1996, I confronted a mask bound rapper about some personal violations he made in my life. In his drunken indignation, he replied he was not responsible for his actions and he might kill me. I lost it and told him to put up his hands. He had 12 tiny people holding him back, the Suns just watched to make sure nobody jumped me from behind. We never got into it but he knew that night like I know this day that if it went down he was going to end up in the ER. The problem was we had crossed a bridge; our music was never going to be bohemian again and I had lost the credibility to tell my crew to “walk away”. In fact, we turned the ship and headed directly into the storm.

There are some background elements to understand before going in. If Konceptual Dominance was the equivalent of two tenured professors doing panel discussion on human behavior through hip hop, Ka Auditron Ba was the essence of two battle rappers getting their own satellite and broadcasting a 24 hour signal based on the lifestyle trying to prevent a cataclysm. We pulled from everything important to us at the time. Both Hypnotic and I were avid Marvel fans. We owned tons of comics. I read a lot of science fiction and watched a lot of movies. Hypnotic was really into documentaries. At the time I was able to study under Mr. Obenga which deeply changed my life and I was able to see firsthand the aspirations of the progenitors of the Nile Valley culture. Meanwhile Hypnotic’s mother was a reggae journalist and therefore gave him access to elders. One in particular who really influenced us was Scientist. Aside from demystifying much of the Rastafarian thought process beyond the generics and tropes, Scientist gave us the template.

 image

Thus began the goal of creating an identity: we would outperform. The analogy of individuals who take and never gave back became “vampires”. We knew because we didn’t play the politics game we were hard pressed to get headline bookings in the Bay Area because of the co-opting of the scene happening. Simply put, I was going to kiss anyone’s ass, the big names were haters and Hypnotic was doing things behind the scene that made these dudes shook. If we couldn’t get the midnight spot or the top name of the flyer, we wanted the 1130pm slot and we wanted to be second on the flyer. It was Scientist who told us to open with The Voodoo Curse that we transformed into the chant to take over the crowd: “We are……the Kemetic Suns….” It didn’t matter WHO was the headliner. Our goal was to create and perform music that stole the show. It happened time after time after time. We would watch crews argue with the promoter: “don’t put Kemetic Suns on before us….they tire out the crowd”. The promoter would come to us and Hypnotic would say “don’t worry we’re just the Auditrons”.

There is most of the recordings on Soundcloud. I am not sure if everything is awesome. I know I was rapping in the top 10 list at the time but I am not sure if everything we did was incredible. There are some tracks that really move me and Koncepts. I pinged him to get his take on our favorites from the project:


Karma: Resonance was a tribute to Scientist but all scientists in general. We knew there was some connection between innovation and audio engineering happening from the Jamaican sound clashes to NYC hip hop to what we were actually doing with the drum machine and ASR vocal effects when we performed. This is a perfect example of the routines we would do. Back and forths that would whip the crowd into a frenzy as an opener. Also the djs loved it because it was heavy with break beats and juggling. FYI, this is Neal Degrasse Tyson narrating before you all knew how great he was. I pulled it from a vhs compilation my father got me because of our shared loved of astronomy.

Koncepts: this beat don’t make no fucking sense. I didn’t make it. but it always killed at shows. watching people try to catch the beat count was comedy. this shit is in like 11/8 or something. Ka and Ba had that rapid-fire flow where they could make it work and trade off like they were freestyling. It’s pretty incredible, actually.


Karma: Black Elevation Station was supposed to be the crunk remix to All Terrain for Internal Symmetry. My father was from the south and I loved southern hip hop. Not just the obvious stuff like Dungeon Family, Geto Boys and UGK. I listened to obscure material most didn’t know about. When I heard this beat I said its smobb music but it’s not southern. At that time, the stuff I was doing with the internet was getting some nods. I was brought to speak at Stanford to a couple of student groups. The idea of creating one’s own content distribution was intoxicating but we were talking to a couple investors who were interested in buying a satellite and setting up a station in San Francisco. When the deal went through, like so many to come after, Hypnotic suggest we just act like it was still going and we had our station on a satellite we owned.

Koncepts: I had this track early on in the process but added to it along the way. a lot of the keys and stuff came in later. I used a few different samples but kept them all in key, I was known for melodic beats but one thing about the west coast style and the Bay underground in particular was this kind of mystical ass sound but with slapping drums. so this was like that, some psychedelic guitar and synths, but at a higher tempo and some 808 sounds. What Ka and Ba did with it was sick, exactly what I had envisioned it for, they flowed perfectly on the beat. A mix of paranoia and toughness in the lyrics. I think I added the later stuff when they were in the studio with the session players - I wasn’t really involved in that and I wanted to tune up my own stuff to keep pace.


Karma: Tapes. Koncepts and I would send each other tapes a couple times a year. He was attending NYU while I was at SFSU. Most of the beats on the tapes he would send would end up on some project: Ambershine, Internal Symmetry, Konceptual Dominance or the Auditrons. Most of the beats I would send back were rough but he would tweak some of them and they would end up on his solo stuff, my ill fated solo album, Prayze The Sun or Internal Symmetry. This beat was clearly for Hypnotic and I. He even put it on the tape. It was Koncepts at his most genius Smokey Robinson. He could hear something we couldn’t in ourselves. He made sure he was with us when we wrote to it. When he started playing it on the speakers, he prompted us with “show them how the flow never ends”. He wanted to play with some of the Nommo concepts of embracing the silence in the groove as well as the volatility in the drums. We were always sure to write what the beat wanted not what we wanted. Soon as Hypnotic mumbled “its vital that you follow our path that is spiral” a voice spoke to me with the chorus. I looked up from the pad and said “I’m an A-U-D-I-O”. At first they didn’t get it, but I wouldn’t stop. When I saw their eyes light up after the third repetition, we knew did something. This might be my favorite memory of music.

Koncepts: this is definitely the big one. coulda maybe done some numbers. had all the elements. smoothed out but conscious, a hook you can understand and repeat… the label Ka & Ba were messing with brought this into a bigger studio and I was able to add the live guitar and percussion. But they had a boy band and brought them in to do background vocals… kind of not what I had envisioned, image-wise. it worked for the sound, as far as that was concerned. The label was just trying to get on a vehicle for their boy band though. They kept trying to push them into the mix of what we were doing and I had to step away from that situation. that’s one of the things that messed with the delicate equilibrium of the project and the crew.


Karma: There was a lot of money to be made being an independent rap group if you were willing to compromise. We weren’t. Managers would tell us we were unmanageable; too head strong and not needy enough. We made far less money than we should have based on our morals and pride. The way to keep the boat afloat was to subsidize the business model with pieces of my check. At first I worked at a smoothie shop that got bought, stole all my recipes and became Jamba Juice; different story for a different time. That wasn’t going to work for me. Doing minimum wage at a mall. Also in my young fiery mind, “how does this help my people?” I got into working for a few non-profits and did harm reduction outreach – needle exchange, violence prevention and street worker advocacy. I was seeing young people being mistreated as wards of the state.

Hypnotic was doing group home work given he had been in one himself. We would trade stories about the issues we were seeing with young people and the bureaucracy. More and more it felt like young people were being experimented on rather than treated or helped. Both of us had some experience at young age in terms of “recruitment” that made us a bit more suspicious. Now with the popularity of Stranger Things, Hunger Games and Ender’s Game, it doesn’t seem so far fetched. I know.

Maybe there was also a piece of falling into the formula. Doing it every time because it worked last time. I remember be asked “whats the sci fi movie song on this album?” well before we even wrote Cryosleep. It’s possible we had become trope.

Koncepts plays the bass on this. That’s why its so rich.


When To Walk Away Pt.4

Preview to The Long Goodbye



Karma: There was this great kung fu western flick my god brother Kenny brought over called All Men Are Brothers: Blood of the Leopard which was adaptation of the Chinese classic Water Margin. It was the story of a high level government official who must choose between his position and his allegiance to a rough street monk who is very anti-corruption in the government. It represented so many relationships at that time. My god brother Wayne was really loud and boisterous, but when I was around he was always calming me down to learn discretion. When he died of cancer in 1997 it put a large hole in my heart. Somehow I ended up becoming that person that was calming folks down and was caught between the diplomacy and the ethical outrage of the people I was around. We would leave shows in San Jose, San Luis Obispo or San Antonio. It would be 3am as we drove home. Somehow at every gas station there was a group of young men about to fight. Somehow there was some kid at an IHOP looking at his pager like “I’m going to get revenge”. Somehow I always seemed to put myself in the middle and talk them down. Somehow I never got shot.

Koncepts: just a perfect song man. we were all really vibrating on the same frequency. I love the little glass clinks and crowd ambiance from the sample. and the kick drum knocks so hard. that’s that Bay Area shit man, a mellow ass sample and deep bass.


Karma: We would perform a lot in the “hip hop” room at raves. That was the culture of the 90’s. Hypnotic hated it because he didn’t feel techno. However to be quite honest, the women at raves were thousand times better looking and more stable than the women who went to hip hop. The baddest of them used to hang in the “jungle” room – a rough amalgamation of actual jungle, trip hop, drum and base as well as what would eventually be dub step. Kirby and I loved going back forth over those beats. We could rap for hours over the stuff. For me it brought me home to Jupiter, Florida. It put me in the red clay of Georgia. It gave me the woods of Mississippi. I loved obscure southern rap and especially enjoyed the bounce aspect. I also appreciated the underestimation that California and New York put upon southern rap. It paralleled the mistake many crews in the Bay ran into. They dissed us on tape, we responded by snatching the mics at their show and serving them. Then they took it outside to battle and got demolished. Then they wanted to throw hands and lost there too. This track is a narrative to that. At the time we wouldn’t have seen it that way.

Koncepts: I feel a way about this song. It’s fucking amazing - the beat, the rhymes, the hook… my god. and when we dropped this at a show? bedlam. but it has a kind of ignoble history. My partner Zvi and I had this Delia Gartrell 45, which is this brutal ballad about a woman’s son dying in the Vietnam war, and we chopped it real slow. Zvi had the idea of chopping up Skull Snaps and doing a bounce pattern with it. It was unique, no one was doing bounce drums with samples, especially not old school breakbeats. Anyway, we kinda fucked up the money because we also gave this track to Mazzi [rapper with our other group the Soul Purpose] and it was like, ok, let’s see who does what with it… Mazzi made an incredible track called “1 and 9” about being from the hood in Jersey. It was super ill. So we had this issue, who could use the beat? Nobody even cares about shit like that anymore, but back then it was a real problem. Zvi wanted to roll with Mazzi’s version, I was on the fence. Anyway, I feel like that disagreement was another one that ended up torpedoing the project. And what’s sad is that neither song ever came out - the Soul Purpose project fell apart not too long after and the album we were working on never made it out of the demo stage. Nowadays I prefer “Ashes” to “1 and 9”. But at the time I couldn’t call it.


Karma: Perhaps the most honest writing anyone was doing in (w)rap™ at that age. I was in my early twenties trying to understand what it meant to be a man while facing a divorce like end to my long term relationship. There were some rules we made up to protect our esteem. One of them was we wouldn’t date women we met in the industry because it led to hardship later. I think that put so much expectation on the women we fell in love with outside of music that when those relationships crumbled it hurt us even more. On top of which, Hypnotic and I were facing this same debacle every time: why does it seem like self-control and discipline gets punished. Simply put, we both were in faithful parties in long term relationships that ended when our romantic partners were not faithful. That combined with life in show biz, turned us bitter when we stuck to the honor code. 

Koncepts: this beat is mad mournful with that one drawn out note that descends and ascends in the chords. I used an SP1200 on a lot of the Auditron drums courtesy of my partner Zvi and you can hear the programming gets a lot better and the drums are chunkier. Ka and Ba perfectly wrote this for how the beat felt to me. Vulnerable and hurt but still standing strong. It’s a shame the project never came out because there are so many tracks that I felt were just the perfect distillation of a feeling, this was one of those. Probably my personal favorite now.


Koncepts: I love this song man. Ba really showed his heart on it. And it takes skill to rap over something like this which is kinda mellow and laid back but not like, sad or down. the loop just gets me in a zone; very based. this might have been an intro beat or slated for Per Aa Ra’s project originally. There were earlier takes that I felt like Ba nailed it a bit better. But you couldn’t save takes back then and we had that stupid belief that a) we have to deliver everything in one take and b) we can definitely do the next one better. so it goes.

Karma: I remember when this was done and I would drive around with mix downs, this was the soundtrack to getting through traffic. It became synonymous with “things are going to be all right”. I struggled for many years to explain what this meant without falling into esoteric answers or metaphysics. One thing my Dad was very good at impressing upon me was “don’t feed steak to children” meaning don’t waste your time trying to explain complexities people don’t want to learn. In of myself, I was learning how to be more efficient and not waste my time. This song really gave folks a sense of optimism.


Karma: Why a final conflict? One thing I have come to terms with and this album should evidence – I can see things before they happen. I am not going to spend a single second of time on weirdos defending it. I will just state – people were downloading music from www.kemeticsuns.comthree years before Napster. Towards the middle of 1997, something was changing in the Bay Area. I was starting to get fans who worked at something called a “tech company” who would invite me to work as a contractor. They had website that had millions behind them but they couldn’t tell you what they did all day. They wanted to pay me to tell them what was cool. More and more I saw a reliance on machines as the new free labor. The dot come boom was becoming a second gold rush and I was aware it had it limits. In 2017, the largest obstacle facing the American worker is not automation. It is the perception that automation demands a better quality of life for all. There are some very good thinkers on this subject but I would direct attention at Berkeley’s own Phillip K. Dick, Frank Herbert and William Gibson.

The point being, the matter of artificial intelligence is not an if, it’s a when. Once this consciousness evolves, it will split in its belief systems. If humans can be cruel, please believe there are machine gods that can be crueler. I am reminded of the quote by Francis de la Rochefoucauld, “Man believes he has abandoned his vices when in fact they abandoned him long ago”. Now looking at where we are with a new year, self driving cars and a new a president, I suspect we are at the placed I had hoped to avoid. Maybe there are some jewels in here for our fans in the years to come.
The album in its entirety is below:


When To Walk Away Pt.5

Preview to The Long Goodbye

  image

Ultimately I believe it was this album that transitioned the Kemetic Suns. We didn’t break up. We didn’t quit. We moved on. The stresses of this album may have been too much. These songs were performed a lot and got us two label deals. Both deals had the same dynamic: this is GREAT. Then you get into the studio to re-record everything and the labels sends in their composition army to get hands on your publishing. Once the songs are done, the contract amendment comes and it requires 36 months of touring with a live band to play all the songs the label wants additions to with $30k of tour support split among 8 people. How many times do you do the same scenario before reaching insanity? How many times do you get bumped from your show time and not want to snap on everyone from the promoter to the venue? How many times do you choke a promoter for the money for your show money, plane ticket money, hotel money and per diem only to go on stage rapping about helping people before your mind fizzles? More and more. Also there was a reality that Koncepts and I came to realize at SXSW in 2001. We hated the road. Touring was living on the road. Living on the road was being a grown latch key kid stuck between parent’s homes. It was miserable. At 16 I was already thinking like a 26 year old. Imagine where my head was at 24, being asked to make drunk and high 19 year olds of suburbia happy on stage for 45 minutes night after night. Most of the guys who adored that life look like Larry Holmes now – flabby, sick, soft and slow to answer. Meanwhile Eclipse and I were making much larger checks pulling strings behind the scenes without needing to be in the spotlight.

Diagnosis

Perhaps the final moment for me was August 2004 when I discovered my mother couldn’t walk. She could barely eat much less explain the pain she was in. After seeing over twenty different doctors, it was clear my mother would need surgery and would need a full time caregiver. I made the announcement to the Kemetic Suns that I was bowing out to free up time for my mother. Mostly everyone was supportive. I disappeared as quickly as I emerged. During this time Kirby and Hypnotic did their Kirb and Chris album

 image

In June of 2005, my father was diagnosed with stage two Alzheimer’s dementia. The doctor took his license on the spot and told us to focus on “quality of life” because they didn’t expect him to live past two years. My mother’s illness combined with my father’s diagnosis and the demons of the road pushed me over the edge. I crawled inside a bottle for a time. I was convinced that I had hurt my parents with my music. I burned my rhyme pads and decided to never write a rap again. When I emerged I had a new path and oath to keep to my father.

image

Over the next five years, I became a new person in learning to go from being a Kemetic Sun to being the best son I could be. I found that many of the skills I learned through the music, were transferrable to helping my father. I also learned a great deal about my willpower, drive and commitment. My father was and is my world. My reason for being. A strong, hard, magician of a man who was loved by all he came across; even his enemies had to respect him. In 1995 when I handed my father a copy of 30 Daze and A Plane Ticket I had no idea the journey I would take. When I asked him what he thought, he played the Daddy Please skit for me and asked if I was talking to him. I vehemently denied it but I was deeply hurt that he thought I was airing him out. I shouted him out at the end of the album but he didn’t seem to hear that. I don’t think he believed me. That never set well with me.

Quality Of Life

image
When my father died, I had a brand new appreciation. I couldn’t just nod. I had to act. I knew he deserved some act to offset the notion that a song had been laid against him. I began writing songs about caring for my father. When things got very bad, Koncepts and Peek started sending me beats. I don’t know why. They don’t either. We are all being polite around the fact that they were worried about me. I would drive my father around to different appointments and play the beats that I was given. Music was good for my father’s moods. During the late nights in the emergency room, I wrote science fiction in my head. This project ended up becoming The Paper Thrones. During the mornings when I was trying to pay for everything, I wrote rhymes as I drove. The combination opened my eyes to the amount of people who were just starting the journey I was on. More and more I saw signs of millions of people caring for a parent with Alzheimer’s and no one speaking for them; or to them. I knew I had to say goodbye to you fans, to my father and to any hold this disease thinks it may have over me. I will not die of Alzheimer’s. If I do, it is because I went down fighting and I hurt the hell out of it.

Sometime in the near future I will release to you this tribute called The Long Goodbye. A 21 track album that is both a tribute to my father and also my way of closure with the people I meet who tell me how much good Kemetic Suns did for their lives. This will be the solo album the fans were promised. It absolutely sounds like a Kemetic Suns album; I am told it sounds like a grown man Ambershine. I have ZERO interest in selling the album. My goal is to see how money we can raise to fight Alzheimer’s using this album. Some simple value proposition such as “If you donate $1 to this cause, you get a code to download the album”.

I hope this answered the questions. I hope this gave you what you were looking for. I hope you will join me one last time for The Long Goodbye.


Links to the original posts on Karma's website.









          Mobile application developer - ICO Technologies - Quebec   
Reports to the Project Manager Main duties and responsibilities Perform programming activities Build mobile solutions Work together with other groups from
From ICO Technologies - Sat, 10 Jun 2017 07:13:16 GMT - View all Quebec jobs
          AlohaCoin Mining Pool Setup/Development by mekemeke   
I've built a mining pool for Alohacoin.However, it is not possible to operate normally.'Boooo' and 'Noooo' will see. It cannot be mined correctly. I will ask you to build a Alohacoin mining pool that works fine... (Budget: $30 - $250 USD, Jobs: C Programming, PHP, Software Architecture)
          New Writers Museum Hosts CCF Benefit | ALA Annual 2017   
The American Library Association (ALA) Annual conference, held in Chicago June 22–27, got off to a literary start with a sold-out Friday night reception at the American Writers Museum (AWM) featuring poet, author, and activist Nikki Giovanni, to benefit ALA’s Cultural Communities Fund, which supports humanities, civic, and STEM (science, technology, engineering, and mathematics) programming in libraries of all types.
          SOIC8 SOP8 flash chip IC Teszt klip BIOS / 24/25 - Jelenlegi ára: 2 747 Ft   
Features: Brand new and high quality.
Universal use for 24, 25, 93 series IC chip in-circuit programming.
Size: 3. 8cm x 1. 5cm.
Package Included: 1 x Test Clip
1 x Adapter Board
1 x Connect Cable
NO Retail Box. Packed Safely in Bubble Bag.
P034866
Vásárlással kapcsolatos fontos információk:
Köszöntjük oldalunkon!
Az adásvétel megkönnyítése érdekében, kérjük olvassa el vásárlási feltételeinket, melyeket rendelésével automatikusan elfogad.
Kedvezmény: Amennyiben termékeink közül minimum 50 db-ot vásárol, kedvezményt biztosítunk. Kérjük igényelje a kedvezményt ügyfélszolgálatunktól.
US hálózati csatlakozós termékeink esetén, külön rendelhető a termékeink között található US-EU átalakító adapter.
Fontos! Ha a leírásban NEM szerepel, hogy ? We dont offer color/pattern/size choice? (szín/minta/méret nem választható), akkor rendeléskor kérjük mindenképp írja bele a megjegyzés rovatba a kiválasztott színt/mintát/méretet, ellenkező esetben kollégáink véletlenszerűen postázzák. Ez esetben utólagos reklamációt nem fogadunk el.
Ahol a ? We dont offer color/pattern/size choice? kijelentés szerepel, sajnos nincs lehetőség szín/minta/méret kiválasztására. Ilyenkor kollégáink véletlenszerűen küldik a termékeket.
Kommunikáció: minden esetben kizárólag email-ben, mert így visszakövethetőek a beszélgetések.
Hibás termék: visszautaljuk a vételárat vagy újrapostázzuk a terméket megállapodástól függően, miután visszapostázta a megadott címre.
Visszautalás: a vételárat visszautaljuk, vagy a terméket újraküldjük ha nem érkezik meg a termék.
Ez esetben kérjük jelezze email-en keresztül, hogy megoldást találhassunk a problémára!
Garancia: 3 hónap! Amennyiben valóban hibás a termék, kérjük vegye fel velünk a kapcsolatot és kicseréljük vagy visszavásároljuk a terméket megegyezéstől függően.
Számlázás: Az elektronikus számlát (pdf. formátumú) Angliában regisztrált cégünk állítja ki, az ÁFA nem kimutatható, az utalás magyar céges számlánkra történik.
A szállítási idő: az összeg átutalása után 9-12 munkanap, de a postától függően előfordulhat a 25-35 munkanap is! A posta szállítási idejéért cégünk nem tud felelősséget vállalni, az említett szállítási idő tájékoztató jellegű!
Nagyon fontos! Kérjük ne vásároljanak akkor, ha nem tudják kivárni az esetleges 35 munkanap szállítási időt!
strong>Postázás: Termékeinket külföldről postázzuk.
Nagy raktárkészletünk miatt előfordulhat, hogy egy-két termék átmenetileg vagy véglegesen elfogy raktárunkból, erről mindenképp időben értesítjük és megfelelő megoldást kínálunk.
Utalás: Kizárólag átutalást (házibank, netbank) fogadunk el (bankszámláról bankszámlára),   Banki/Postai készpénz befizetést/Rózsaszín csekket ill. egyéb NEM!
Átutalásnál a rendelésszámot feltétlenül adja meg a közlemény rovatba, ellenkező esetben előfordulhat, hogy nem tudjuk visszakeresni a rendelését. Ebben az esetben nyilvánvalóan nem tudjuk a terméket postázni ill. Önt sem tudjuk értesíteni, hiszen nincs kiindulópontunk!
Fizetés/szállítás:
-2000Ft felett (postaköltséggel együtt) CSAK es KIZÁRÓLAG ajánlottan postázzuk a terméket az alábbiak szerint:
-Ajánlott posta esetén az első termékre a posta 890Ft , minden további 250 Ft/db.
- Sima Levélként 2000Ft alatt: az első termékre a posta