[Updated on 7/3/14]
I started this thread some months ago to introduce the new hardware that I was developing. If you're interested in this new platform, which has an integral PSU and RF module, please check out www.Mk2PVrouter.co.uk . It's all there, and my Shop is now open for business :)
Robin Emley (calypso_rae)
* * *
To date, most PV Routers have been based on an Arduino Uno or an emonTx. These platforms are fine, but various additional items are required in order to obtain a complete system. This all takes time to assemble, and involves direct contact with Live wiring, with safety implications.
Since posting my original design, I have trained up as a Domestic Electrical Installer, primarily so that I can install Mk2 Router systems in my locality. To minimise the build-time for each unit, I am developing a pair of PCBs that will mount directly inside the enclosure that I intend to use, without need for any additional fixings.
The smaller PCB is for the output stage, and is essentially a re-work of the one that Rich can supply. The main PCB (see below) is for everything else: a mains transformer (2 x 6V) and fuse-holder, a simple 3.3V PSU, an AC voltage sensor, two AC current sensors with protection diodes, an Atmega 328 plus peripheral components, an RFM12B. the FTDI connector, the trigger control output, and the connection for a mode-control switch. There will also be a socket for a ribbon cable which feeds a front-panel display, and space for the associated series resistors. An image of the assembled board, as created with PCB Wizard 3 , is attached.
The front-panel display is an inexpensive 4-digit type which relies on persistence of vision, each digit being activated for just a few mS in turn. By use of integer maths, there is plenty of time for this housekeeping to be done by the main processor. The display shows how much surplus energy has been diverted today. To obtain an accurate value, a second CT is fitted inside the enclosure; this is a small bobbin-type one which slips around either of the switch Line conductors. The processor now has three analogue sensors to sample rather than the usual two, but this can be achieved by careful use of the ADC.
I/O pins for this design are tight. If the RF chip is required, there are not enough spare to drive the display. To get around this difficulty, I've added a couple of logic chips which reduces the number of control lines that are needed. If the RF chip is not required, those five driver lines can be used instead to drive the display. In this case, the two logic chips can be replaced by a handful of wire links, as indicated on the silk-screen layer. These links can be soldered directly to the board, or onto headers that are pushed into the DIL sockets.
The display unit requires series resistors on 8 of its 12 lines. To maintain flexibility, I've provided space for a resistor on every line; the four that don't need them can just have a wire link fitted. If the RF chip is not required, the series resistors are R11 - R21; if RF is required, then they are R16 - R27. I'm confident that this arrangement will work, it's easier to do that describe.
I've had this kind of display running for some weeks at home. It's good to see exactly how much surplus energy has been diverted each day, and to compare this with the total shown on the inverter. On a chilly November morning, today's values are not encouraging (photos are two posts down this thread) but the sunshine will surely return. Until some surplus power has been diverted each day, the display shows a 'walking dots' pattern. The data resets each night, at a set period after surplus power was last detected. This simple arrangement avoids the need for a real-time clock.
The RF chip can be used to send whatever data is required. Although none of my previous Mk2 sketches have included this feature, it has appeared in other more recent sketches so will definitely be available to accompany the new hardware.
The completed unit needs to be capable of passing various standard tests that an electrician would apply. Essentially, the box needs to be capable of looking like a continuous length of "final circuit" wiring, with no hint of electronics. By careful use of mains switches that are mounted on the sides of the box, this setup can be achieved. With the enclosure that I intend to use, there will be ample space for making connections to two T&E cables. The ABS version costs around £15 inc VAT. A polyester version with better thermal properties is also available for about £3 more. Any alternative type of enclosure could of course be used, but the PCBs will fit into this one very nicely.
Once the design is finalised, I intend to start building these units for my own use. At that stage, I will be happy to sell the various component in kit-form for others to assemble. I may also be able to provide pre-assembled and tested boards, as well as enclosures, heatsinks etc. For this purpose, I have started the website www.mk2pvrouter.co.uk . I hope to be open for business around February/March 2014.
Although no formal approval of this product is envisaged, I feel sure that properly-assembled units will be capable of working safely and reliably, and will inspire confidence. Various prototype units were on show at the recent MadLab event. Safe installation will, of course, remain the user's responsibility.
PS. The system won't accept my 200kB ZIP file, photos will hopefully appear when I've found out how to delete some old stuff :(
An easier workaround was to start up a new account via which comes with extra space. Here is the proposed layout of my main PCB (click the image for a better view). Rather that soldering the RFM12B module directly to the board (which I've always found very awkward to do), I'm intending to make these connections with short wires. The module could be loosely held in place by a some suitable means while the wires are attached. This would allow it to be easily replaced at some later stage, e.g. for a change of frequency.
Re: New hardware for Mk2 PV Router
Hi Robin
This seems a really good idea. I have already built, with much valued help from this forum, 2 Mk.2 PV routers with RFM12B modules, which work very well, and look forward to seeing your new designs.
I would just like to wish you all the best for your new venture
Re: New hardware for Mk2 PV Router
Hi solar, thanks for the support. It was good to get your Mk2 Router project back on track earlier this year by focussing on the basics. However complex the data processing side may be, the sensor circuits need to be right.
Using this new account, I will hopefully be able to upload some more files ...
Re: New hardware for Mk2 PV Router
Hello Robin, this is really fantastic, I wish you the best of luck too. The PCB and complete box looks very nice!
I've increased your total max total files upload setting from 20MB to 50MB.
Re: New hardware for Mk2 PV Router
Thanks Trystan. Unless you want to delete it, my other account can now sit there quietly in the background - just in case!
Re: New hardware for Mk2 PV Router
Hi Robin, I met you at the MadLab in Manchester, I was impressed with your demo and kit I do wish you all the best in your new venture. Clive
Re: New hardware for Mk2 PV Router
Thanks Clive, the "formal" demo after lunch was a bit more organised than the one you got. When I'm looking for volunteers to try out the new boards, I may give you a call :)
Re: New hardware for Mk2 PV Router
Hi Robin
I have successfully built your MK2i rev5b and have an RF unit running flawlessly for last 4 months. This new circuit will be good especially with the display unit and pic looks good. I assume there will be a new code for this. I keep meaning to add a "30 min boost" push button toggle on/off to the original for when a quick override is required (e.g now). Can I request your thoughts (where/how to add in code ?) and say this may be useful in your revised version. At present have just done a manual switch but that's prone to be left on.
Will the original boards be capable of using the new code if so we only need to add a sub board for display
Keep up the good work & good luck
Dave
Re: New hardware for Mk2 PV Router
Hi Dave,
It's always good to hear of a Mk2 Router that's running flawlessly, especially when the load is controlled via RF. With the Mk2i_rev5 code, the RF payload is essentially just the on/off status of the remote load, but some extra data content could easily be added for displaying on an emonGLCD or whatever.
Any new code of mine will certainly be able to run on existing hardware. With a Uno, getting access to spare i/o pins is easy because they're all in straight lines. But with the emonTx, they're all over the place. To access enough spare pins for use by the 4-digit display is a real pain. Here's a pic of the least complex wiring harness that I managed to devise for this purpose; the one in my own rig is similar to this. This arrangement may be OK for a one-off, but is far too time-consuming for any kind of volume production. With the new hardware, all spare pins are routed to a ribbon-cable connector, so connecting this to the back of the display is simple.
For a 30-minute boost function, you'd need some kind of timer. This easiest way to achieve this would be to count mains cycles. 30 minutes is 90,000 mains cycles which exceeds the capabilities of a 2-byte integer, so you would need to use a 4-byte 'long'.
There would also need to be a boolean flag to indicate whether the boost is currently 'on' or 'off'. When the flag is "on", the state of the timer would be checked each mains cycle. When the max count has been reached, the boost flag would be turned off. While the boost flag is active, the triac would be forced to come on; otherwise, it would behave as normal. You would need some reliable means of detecting when the "boost" button has been pushed. The Mk2i_rev5 code already has a routine for detecting the change of state of an external switch.
A good way of adding this kind of feature might be to develop the new code in a separate sketch, purely as a test platform. Then, once it's working to your satisfaction, the new code can be moved directly into your main sketch with a minimum of disruption.
PS. If there are any spare pins, I'll keep the idea of a boost function in mind. Maybe one of the Serial pins could be used for for this purpose.
Re: New hardware for Mk2 PV Router
The prototype "main" boards that I ordered from Ragworm have arrived, and the one that I have assembled and tested is working nicely. All functions are behaving as expected: the power supply, DC voltage reference, AC voltage source, two AC current sources, the processor with its crystal, the RFM12B, the logic for a 4-digit display and the display itself. A few of the hole sizes are rather tight and will need to be adjusted for the next run.
I'm assembling a pair of clean-build boards and hope to post some photos of these soon. Both of these boards will support a 4-digit display but only one will have the RF module fitted. The one with the RF module requires the two extra logic chips to be fitted; the one without the RF just requires some wire links.
I've also designed a 'slimline' PCB for the output stage, and these prototypes appeared today. This PCB can be mounted using one of the existing mounting points in my chosen enclosure. The slot allows for some flexibility in the triac's location. As with Rich's original design, I've used wider tracks for the high-current paths. There is a second slot under the trigger chip which provides the necessary degree of "creepage distance" between the HV and LV sides as described by Robert about half-way down this page.
A novel feature of this board is the optional use of solid copper wires to boost the current-carrying capacity. These wires thread through the PCB in the manner of a staple. Having bent these wires into place, their ends can be adjusted until they are a tight fit against the component legs and then soldered into place. With these extra wires installed, the tracks on the underside of the PCB carry minimal current. The solid copper 1.5 mm2 earth core from 2.5 T&E 'Ringmain' cable is perfect.
Power can be fed to the triac in three ways. The first option is via a high-current PCB terminal block. This has a 10mm spacing so the tracks can be well separated. A pair of standard 0.2" terminal blocks can also be used, as per Rich's design. High power connections can also be made feeding flexible wires through the board and soldered their ends directly to the copper underside. In practice, these wires would also be soldered to the adjacent copper 'staple'.
The control signal can be applied via a standard 0.2" PCB-block with screw terminals, or via a SIL strip with 2 pins on 0.1" spacing. This is my preferred method, the wire from the processor board can then just push into place. This control wire will span the heavyweight T&E mains wiring so needs to be easy to remove and replace.
Various photos of these trigger boards are attached. A few adjustments will be needed for the next batch, but the prototype version does work and it fits into the box nicely.
Re: New hardware for Mk2 PV Router
VERY nice, Robin!
Best of luck to you with your new project.
Regards,
Bill
Re: New hardware for Mk2 PV Router
Excellent work.
My 4 load "wired" system based on the MK2i is working very well, but still very Heath Robinson.
I'm watching your progressive with real interest. My next stage is to make some nice remote 'switches' packaged for loads in domestic areas, so far I've hidden it all away in cupboards.
All the best
Simon
Re: New hardware for Mk2 PV Router
Thanks for those encouraging comments. I think my second PCB for the trigger & triac could be of use to many constructors. Being so small, it should be cheap when I can order decent quantities.
Here are some photos of the main PCB as assembled in each of its two forms (spot the difference!). The first three photos show my alternative way of connecting the RFM12B which I found much easier to do than soldering it directly to the board as on the emonTx V2. Before the first wire is attached, the RF chip needs to be held in place by a piece of double-sided tape or similar. To connect each of the pins that are active, I used 0.4mm kynar wire (stripped). Although this wire is very fine, the chip sits nice and firm once all 7 links are in place. The RFM12B works fine with just a simple aerial. I've not tried fitting coax but all the holes appear to be in the right places for this, including a pair for strain-relief labelled "co-ax fix".
The two PCBs are displaying the same value on the 4-digit display, albeit with different sketches. The board with the RFM12B fitted has insufficient spare pins to drive the display, so two extra logic ICs are needed. The board without the RF chip has no need for this logic; instead it requires some links to bridge across these locations (as shown on the silk screen).
When laying out this PCB, I overlooked the fact that the outputs from these logic chips appear at fixed points which cannot be changed in software. Consequently, these tracks don't appear at the ribbon connector in the right order. As a temporary fix, just for these prototype units, I'm using an adapter at the remote end of the cable; this rearranges the lines into the correct order for the display module. With this adapter in place, the optics work fine, just like Hubble! This bug will be sorted out before any more boards are ordered.
If anyone would like to provide a good home for any of these prototype boards, feel free to send me a PM. Otherwise, I intend that the mature versions will become available for sale in various forms around February/March.
Re: New hardware for Mk2 PV Router
Last photos for a while, for each version of the main board, slightly better that the previous ones.
Re: New hardware for Mk2 PV Router
Someone has kindly pointed out that the screen-print image on my trigger board is incorrect. The 6-pin IC should of course be shown as MOC3041 rather than LM358.
Guess I could do with a break ...
Re: New hardware for Mk2 PV Router
This is looking really good.
Congratulations on your new venture!
Re: New hardware for Mk2 PV Router
My website at www.mk2pvrouter.co.uk now has a couple of extra pages to show how the new hardware is coming along. One of these shows an output board being assembled using a new PCB that I've commissioned.
In due course, I intend to sell Mk2 components direct from the website. In the meantime, if anyone would like to avail themselves of these items, please send me a PM. Their cost is:
PCB only - £5
PCB + all components (triac, trigger, 6-pin DIL header, resistors and all connectors - £13
As above, but pre-assembled and tested - £16
When shipping a pre-assembled board of this type, it's probably best for me not to solder the triac in place. I'll need to find some other way of testing it. The user will then be free to mount the triac at whatever height is best for their heatsink. Also, the postage will be a lot less. When fully assembled, Royal Mail regard this 16-gram payload as a "small parcel" :(
PS. I still have a few of Rich's equivalent PCBs available, now price-matched to the above (i.e. £5 rather than £8)
Re: New hardware for Mk2 PV Router
Well done Robin. Now that you are head of design, chief programmer and company director, I hope that you'll not become a stranger in the forum?
All the best mate.
Paul
Re: New hardware for Mk2 PV Router
Here's one of Robin's prototypes at work dumping excess energy into a 55 gallon drum of water. Even on an overcast day, the unit still managed to divert nearly 2 kWh to my dump load. This one is connected to a 240 Volt, split-phase, 60 Hz system.
Re: New hardware for Mk2 PV Router
Here's that same prototype near the end of a sunny day...
Re: New hardware for Mk2 PV Router
Nice one Bill!
The 'mature' PCB for this board has now appeared and appears to be working as intended. So I look forward to lots more happy customers once the weather over here improves.
A couple of safety points: the prototype board that I sent you didn't have a cover over its fuse-holder, but the kits that I intend to supply will include this feature. I must send you a replacement unit which would look better in any future photos :)
I would recommend including an Earth connection for the mains feed. When working in an area with 30 mA RCD protection, this would reduce the risk of injury in the event of accidental contact with the Line connection. In your 120V environment, this risk is presumably less than in the UK.
Have you received a PCB-based adapter plate for your display? I sent it to you on the 5th. This should be a direct plug-in replacement for the strip-board version that is so prominently featured in your latest photo.
Last night, I was trying to get a decent photo of brown 22pf capacitors against a similarly coloured PCB. With its bright blue ceramic caps, your photo may well end up in my Build Guide!
Business Plug: I'm still intending to have PCBs and kits of parts available within the next few weeks. There will also be a comprehensive Build Manual, parts lists, and installation guidance. Various sketches and supporting diagrams will be available for download. And there needs to be a 'shop' page, and an FAQs, and ...
For anyone who is interested in this new hardware, your patience is greatly appreciated. Much is happening behind the scenes.
Re: New hardware for Mk2 PV Router
Looks really good - and really glad to see it put into 'production'! Had I known about the availability of the PCBs separately I would have jumped on one - I just spent the last few days drawing out an output board on a bit of copper-clad board. A bit Heath-Robinson but hopefully it will etch ok! If not I will be in touch ;)
Great job on the simplicity side of things - makes for an easy install I expect! I am still battling with which type to go with and then sorting out calibration!
Re: New hardware for Mk2 PV Router
I would like to give a big thank you to Robin for his help and advice. I purchased one of his proto boards and the output board and installed them in a box. It works just as it says on the tin. He supplied me with a log file of the pre testing as well.
I must say that these boards are beautifully made and are a credit to him, I wish him every success in his venture.
I would like to point out that the heat sink is from an old pc and that I have put a switched fused spur on the input and a double pole switch at the immersion heater. The heat sink is earthed but not shown in the pic. Just waiting for the sun now.
..Clive
PS. Just a quick update When I installed the system on the 20th Feb. until today 3rd March it has put 39.8Kw to my immersion heater. which is not bad for the time of year.
I use the gas boiler to bring the temp up to 35C and have the immersion set to 70C which is very hot, I do have thermostatic showers though.
Well chuffed. Thanks again Robin.
Re: New hardware for Mk2 PV Router
Nice one Clive,
This Spring sunshine is most welcome. My emonTx-based system has reached its maximum temperature a couple of times recently.
All being well, my website with the new hardware will be open for business within the next few days ...
Robin
Re: New hardware for Mk2 PV Router
Ladies and Gentlemen, I am pleased to announce that my website, www.Mk2PVrouter.co.uk is now open for business :)
This purpose-built version of my Mk2 PV Router has three new circuit boards. Each of these is available in kit-form, or pre-built and tested, or as a bare PCB. For those who wish to source their own components, a parts list and circuit diagrams are available. A revised version of the Mk2 sketch for this new hardware, loosely based on Mk2i code, is also available for download.
There is a comprehensive Build Guide with plenty of photos, and a Shop which can supply all the necessary items. The most comprehensive version of the Router includes a 4-digit display which shows the total amount of diverted energy each day. It also has an RF facilty, the aerial being wired out to an SMA mounting point ready for an external aerial. In kit form, including postage, this version sells for £98; the basic version is £77. I'm hoping to sell plenty of complete kits because everything packs inside the ABS enclosure really nicely.
With its on-board power supply, the main board could provide a convenient platform for any general processing application. The RFM12B is fully tracked, and most of the processor's IO pins are routed to easily accessible connector points. A pair of these boards could be used to provide an RF link between any two locations where mains power is available. Perfect for a movable remote load facility for your PV diverter. But there must be plenty of non-PV uses too!
The output board can be used for any application where a processor needs to control a mains load. The kit of parts for this board is £14, or I can supply it in a pre-built and tested state for an extra £4.
For anyone who already has most of the parts, but has yet to assemble their Router into a box, there is a Misc H/W Pack which includes all those awkward-to-find items. Various other components are available, and I will always be happy to help out with non-standard requirements if possible.
My price list includes several pre-built versions of the complete system, but in practice I may find it difficult to provide a rapid turnaround for such orders. It all depends on how much of my time is taken up with other things during this initial phase.
I'm intending to operate the website via a pair of "Just Mail" email accounts which form part of my Easily.co.uk package. These accounts, as mentioned on the Shop page, are proving to be "interesting", so please bear with me if I appear to be struggling - I probably am!
Re: New hardware for Mk2 PV Router
Looks good, Robin. Thanks for the plug re my system.
Best of luck to you in your new venture!
Bill
Re: New hardware for Mk2 PV Router
Since opening my online Shop on Friday, I've taken just one order. That was for a complete RF-ready system, which was assembled and tested over the weekend, and dispatched to a customer in Cornwall yesterday.
If anyone is thinking of purchasing any items from me, now would seem a good time. Everything is here and ready - even the nice weather. For the last couple of days, our DWH has reached its max temperature by midday, so we've not needed to run the boiler at all.
Robin
Re: New hardware for Mk2 PV Router
Hello calypso, first of all congrats on a great proyect and wish you the best. Things could start slowly but im sure people will get interested. Unfortunatly I can not benefit from it in my rented appartment, if not I would buy one for sure.
I would like to make a modest recommendation. Make your website a little more visual. It has amazing information, very technical, just what I would like to see, but I think there is missing some visual content to make it more attractive to a wider audience.
I would suggest creating something like the module diagram for the home page on openenergymonitor.org, the diagram with the emonlcd, emonbase, emontx, smartphone and computer.
Also making the shop section more visual. create kits and put an image with all the included parts of the kit.
hope any of this helps. good luck.
Re: New hardware for Mk2 PV Router
Thanks, Sergegsx, you're not the first person to point out that my website - especially the Home page - lacks that certain touch of magic which is generally required to sell things!
Rather than spending more time in preparation, I thought it best to concentrate on getting all the necessary hardware together, and opening Shop early in the new season. If business continues to be less than brisk, I'll be able to spend more time doing other things, including improving the website's presentation - and a host of other things that need to be done.
I'm not intending to push my new product here any more. If anyone wishes to contact me, they should have no trouble in doing so via the other place, or just send me a PM.
Regards to all,
Robin
Re: New hardware for Mk2 PV Router
Having never before posted a Mk2 Router sketch which supports datalogging, one is now available on my website. Although this code is intended to be used with my new PCB, it should work with only minor changes on an emonTx V2. The new sketch is attached, as are two files of results, with annotations.
The first set of results was taken yesterday in a simulated environment when no PV was available. My source of 'PV' was a 1.25 kW heater, and the load was a 3 kW heater. Data was captured from the Serial Monitor as it was being transmitted.
The second file was taken today in a 'live' environment where surplus PV was being diverted to a 3 kW load. It demonstrates how the net flow of energy at the supply point is held close to zero while the total amount of diverted energy steadily increases. The difference between 'normal' and 'anti-flicker' modes can be clearly seen. On this occasion, the data was captured at the receiving end of the RF-link.
For compatibility with emonCMS, all values are sent as integers:
typedef struct {
int msgNumber;
int powerAtSupplyPoint;
int divertedEnergyTotal;
} Tx_struct;
I intend to post this code soon in a form that is directly compatible with an emonTx V2. This will use the conventional pins for the input sensors and won't include any code for a 4-digit display which requires two additional logic chips. As this new code has many similarities with the Mk2i rev5 sketch, it will probably appear on the Mk2i thread as rev6.
The circuit diagram for my 'main' MK2 board is also attached.
Re: New hardware for Mk2 PV Router
For some time, there has been talk about how an SSR can be driven from an Arduino or an emonTX on this thread.
I've finally got around to trying this out using one of my new PCBs, and it is indeed very straightforward. Although the regulated supply (3.3V) is insufficient to drive the SSR reliably, the unregulated supply (~9V) can be used for this purpose via a simple transistor switching stage.
By omitting the RF module but including the pin-saving hardware (two 74HC logic chips), 5 spare IO pins are available at the J1-5 connector. These can all be used to drive additional loads via SSRs.
On the test rig that I've assembled, all five of these spare pins have been wired to a piece of strip-board on which there is an LED for each. Two of these lines have a transistor stage in place so they can also drive an SSR.
To access the unregulated supply, two holes need to be drilled through the PCB. By choosing the right location, these pins can be soldered directly to the adjacent tracks so no extra wiring in required. If I ever get to re-layout this board, I should provide a means of accessing this point, and maybe include some transistors too.
A multi-channel CAT5-linked version of my Mk2 Router sketch will shortly be appearing on my website. This will be similar to the Mk2i Rev5 code already released here, but without the RF overhead.


# File lib/launchy/application.rb, line 13 def application_classes @application_classes ||= [] end
# File lib/launchy/application.rb, line 17 def find_application_class_for(*args) Launchy.log "#{self.name} : finding application classes for [#{args.join(' ')}]" application_classes.find do |klass| Launchy.log "#{self.name} : Trying #{klass.name}" if klass.handle?(*args) then true else false end end end
find an executable in the available paths mkrf did such a good job on this I had to borrow it.
# File lib/launchy/application.rb, line 31 def find_executable(bin,*paths) paths = ENV['PATH'].split(File::PATH_SEPARATOR) if paths.empty? paths.each do |path| file = File.join(path,bin) if File.executable?(file) then Launchy.log "#{self.name} : found executable #{file}" return file end end Launchy.log "#{self.name} : Unable to find `#{bin}' in #{paths.join(', ')}" return nil end
# File lib/launchy/application.rb, line 10 def inherited(sub_class) application_classes << sub_class end
# File lib/launchy/application.rb, line 6 def known_os_families @known_os_families ||= [ :windows, :darwin, :nix, :cygwin, :testing ] end
return the current 'host_os' string from ruby's configuration
# File lib/launchy/application.rb, line 45 def my_os if ENV['LAUNCHY_HOST_OS'] then Launchy.log "#{self.name} : Using LAUNCHY_HOST_OS override of '#{ENV['LAUNCHY_HOST_OS']}'" return ENV['LAUNCHY_HOST_OS'] else ::Config::CONFIG['host_os'] end end
detect what the current os is and return :windows, :darwin or :nix
# File lib/launchy/application.rb, line 55 def my_os_family(test_os = my_os) case test_os when /mingw/ family = :windows when /mswin/ family = :windows when /windows/ family = :windows when /darwin/ family = :darwin when /mac os/ family = :darwin when /solaris/ family = :nix when /bsd/ family = :nix when /linux/ family = :nix when /aix/ family = :nix when /cygwin/ family = :cygwin when /testing/ family = :testing else $stderr.puts "Unknown OS familiy for '#{test_os}'. Please report this bug to <jeremy at hinegardner dot org>" family = :unknown end end
returns the list of command line application names for the current os. The list returned should only contain appliations or commands that actually exist on the system. The list members should have their full path to the executable.
# File lib/launchy/application.rb, line 125 def app_list @app_list ||= self.send("#{my_os_family}_app_list") end
Cygwin uses the windows start but through an explicit execution of the cmd shell
# File lib/launchy/application.rb, line 142 def cygwin_app_list Launchy.log "#{self.class.name} : Using 'cmd /C start' on windows." [ "cmd /C start" ] end
On darwin a good general default is the 'open' executable.
# File lib/launchy/application.rb, line 130 def darwin_app_list Launchy.log "#{self.class.name} : Using 'open' application on darwin." [ find_executable('open') ] end
find an executable in the available paths
# File lib/launchy/application.rb, line 108 def find_executable(bin,*paths) Application.find_executable(bin,*paths) end
return the current 'host_os' string from ruby's configuration
# File lib/launchy/application.rb, line 113 def my_os Application.my_os end
detect what the current os is and return :windows, :darwin, :nix, or :cygwin
# File lib/launchy/application.rb, line 118 def my_os_family(test_os = my_os) Application.my_os_family(test_os) end
Determine the appropriate desktop environment for *nix machine. Currently this is linux centric. The detection is based upon the detection used by xdg-open from portland.freedesktop.org/wiki/XdgUtils
# File lib/launchy/application.rb, line 90 def nix_desktop_environment if not defined? @nix_desktop_environment then @nix_desktop_environment = :generic if ENV["KDE_FULL_SESSION"] || ENV["KDE_SESSION_UID"] then @nix_desktop_environment = :kde elsif ENV["GNOME_DESKTOP_SESSION_ID"] then @nix_desktop_environment = :gnome elsif find_executable("xprop") then if %x[ xprop -root _DT_SAVE_MODE | grep ' = \"xfce\"$' ].strip.size > 0 then @nix_desktop_environment = :xfce end end Launchy.log "#{self.class.name} : nix_desktop_environment => '#{@nix_desktop_environment}'" end return @nix_desktop_environment end
run the command
# File lib/launchy/application.rb, line 153 def run(cmd,*args) Launchy.log "#{self.class.name} : Spawning on #{my_os_family} : #{cmd} #{args.inspect}" if my_os_family == :windows then # NOTE: the command is purposely omitted here because # When "cmd /c start filename" is # run, the shell interprets it as two commands: # (1) "start" opens a new terminal, and (2) # "filename" causes the file to be launched. system 'cmd', '/c', cmd, *args else # fork, and the child process should NOT run any exit handlers child_pid = fork do # NOTE: we pass a dummy argument *before* # the actual command to prevent sh # from silently consuming our actual # command and assigning it to $0! dummy = '' system 'sh', '-c', '"$@" >/dev/null 2>&1', dummy, cmd, *args exit! end Process.detach(child_pid) end end
used only for running tests
# File lib/launchy/application.rb, line 148 def testing_app_list [] end
On windows a good general default is the 'start' Command Shell command
# File lib/launchy/application.rb, line 136 def windows_app_list Launchy.log "#{self.class.name} : Using 'start' command on windows." ] start ] end


I am a rising senior studying Computer Science Engineering at the University of California, Santa Barbara. I have a passion for robotics, computer security, and distributed systems. I spend what time I can the great outdoors.
Analyzed the performance of the cache buster feature of ad delivery using data analysis libraries in python. Identified areas for improvement and designed a new ad delivery pipeline that reduces latency, increases use engagement, and decreases computation costs without losing revenue. Implemented a software cache for this purpose, sped up the logging pipeline, and deployed an AB test to production all within the scope of my internship. Presented the results of the experiment and authored internal documents on the analysis, design, and potential improvements to the cache buster feature.
I worked on a few build system devops project which involved building support servers using Flask, deployments with Ansible, and local Minikube deployments. I also developed new Docker containers to house these projects. Later on, I worked on building a profiler for Intel's Spring Crest Deep Learning Accelerator. Using the chip API, I wrote high-performance, low-latency code that tracked events on the chip's hardware and located areas of potential improvement by identifying potential for multithreading and expensive areas of the code. The insights helps Intel optimize models for their hardware.
Worked on a project to measure currents by deploying many small tilt measuring modules throughout a kelp forest. The objective is to reduce the cost of measuring ocean currents and better observe the effects that they have on the ocean by noting patterns in currents associated with changes in wildlife behavior, water temperature, etc.
Worked and led multiple projects including high altitude balloons that carried micro organisms to elevations upwards of 100,000 feet in order to conduct computerized experiments on them to determine their suitability for space travel in the future. The team was 25 people working from the lab of Professor Philip Lubin, Head of the Mechanical Engineering Department. The code was written on an Arduino and Raspberry Pi in C and Python.
Worked to develop a webpage that displayed clients’ spreadsheets in the browser, ran analytics and suggested modifications to optimize business practices. The page was developed using Node.js and C#. The project was developed using the Agile methodology.
Oversaw the robotics team of 150 that won second place in the Röebling division finals at the FIRST Robotics National Championships in 2017. The project included computer design of the robot, fabrication, wiring, and software development including computer vision.
 I am an avid surfer and hiker, and I ski during the colder months in California.
When not outdoors, I catch up on a few TV shows, try my hand as a chef, and read quite a few books.
Click here to download my resume. Feel free to email me if you'd like any further information, or have any questions for me.


You are accessing a testing version of this app, which is not recommended.
Please go to live version and update your bookmark.
To view your BIM 360 Docs files on this app please authorize my Forge Client ID with your BIM 360 Docs Account.
Use this as Forge Client ID:
To access your BIM 360 Docs files with this app, you need to connect your BIM 360 account with the app.
Congratulations! You can now access your BIM 360 Docs files.
Developed by Forge Partner Development team at Autodesk, Inc.
Get the source code.
Question? Suggestions? Contact us directly or see our open issues.


| Package | com.wemakedigital.ui |
| Class | public class Component |
| Inheritance | Component ShowHideComponent CoreComponent flash.display.Sprite |
| Subclasses | Container |
The base component class for the ui framework.
Extending the flash.display.Sprite
class it provides
methods for the following:
width
and height
properties
inherited from flash.display.DisplayObject
which become read
only via displayWidth
and displayHeight
properties.
| Property | Defined by | ||
|---|---|---|---|
| autoHeight : Boolean
The auto height mode of the component.
| Component | ||
| autoWidth : Boolean
The auto width mode of the component.
| Component | ||
| bottom : Number
Anchor padding from the bottom of the container.
| Component | ||
| colour : int
Optional background colour.
| CoreComponent | ||
| colourAlpha : Number
The alpha transparency value of the background colour.
| CoreComponent | ||
| container : Container
The component's container in the display hierarchy.
| Component | ||
| created : Boolean
The created status of the component, default is
false . | CoreComponent | ||
| destroyChildren : Boolean = true | CoreComponent | ||
| displayHeight : Number
The
height property inherited from
flash.display.DisplayObject . | CoreComponent | ||
| displayWidth : Number
The
width property inherited from
flash.display.DisplayObject . | CoreComponent | ||
| explicitHeight : Number
The explicit height of the component, used by the render method.
| CoreComponent | ||
| explicitWidth : Number
The explicit width of the component, used by the render method.
| CoreComponent | ||
| height : Number
The height of the component.
| CoreComponent | ||
| hideTime : Number = .2
The length of the hide tween in seconds.
| ShowHideComponent | ||
| horizontalCentre : Number
Anchor padding from the horizontal centre of the container.
| Component | ||
| id : String
ID of the component.
| Component | ||
| interactive : Boolean
Enables and disables mouse and keyboard interactivity with the
component.
| CoreComponent | ||
| left : Number
Anchor padding from the left of the container.
| Component | ||
| maxHeight : Number
The maximum height of the component
| CoreComponent | ||
| maxRelativeHeight : Number
The maximum relative height of the component
| Component | ||
| maxRelativeWidth : Number
The maximum relative width of the component.
| Component | ||
| maxSpareHeight : Number
The maximum spare height of the component
| Component | ||
| maxSpareWidth : Number
The maximum spare width of the component.
| Component | ||
| maxWidth : Number
The maximum width of the component.
| CoreComponent | ||
| minHeight : Number
The minumum height of the component.
| CoreComponent | ||
| minRelativeHeight : Number
The minumum relative height of the component.
| Component | ||
| minRelativeWidth : Number
The minumum relative width of the component.
| Component | ||
| minSpareHeight : Number
The minumum spare height of the component.
| Component | ||
| minSpareWidth : Number
The minumum spare width of the component.
| Component | ||
| minWidth : Number
The minumum width of the component.
| CoreComponent | ||
| relativeHeight : Number
The relative height of the component.
| Component | ||
| relativeWidth : Number
The relative width of the component.
| Component | ||
| right : Number
Anchor padding from the right of the container.
| Component | ||
| round : Boolean | Component | ||
| showTime : Number = .2
The length of the show tween in seconds.
| ShowHideComponent | ||
| spareHeight : Number
The spare height of the component.
| Component | ||
| spareWidth : Number
The spare width of the component.
| Component | ||
| top : Number
Anchor padding from the top of the container.
| Component | ||
| verticalCentre : Number
Anchor padding from the vertical centre of the container.
| Component | ||
| width : Number
The width of the component.
| CoreComponent |
| Method | Defined by | ||
|---|---|---|---|
|
Constructor.
| Component | ||
|
addChild(child:DisplayObject):DisplayObject
| CoreComponent | ||
|
beforeRender():Boolean
Called by the container after the sizing and positioning in the
container hierarchy has completed just before all invalidated
components render themselves.
| Component | ||
|
hide(animate:Boolean = true):void
Hide the sprite.
| ShowHideComponent | ||
|
invalidate():void
Invalidates the component, forcing it to render on the next
flash.events.Event.RENDER event. | Component | ||
|
removeChild(child:DisplayObject):DisplayObject
| CoreComponent | ||
|
removeChildren():void
Remove all children of this component from the display list.
| CoreComponent | ||
|
render():void
Renders and re-renders the component display.
| Component | ||
|
show(animate:Boolean = true):void
Show the sprite.
| ShowHideComponent |
| autoHeight | property |
autoHeight:Boolean
[read-write]The auto height mode of the component.
Implementation public function get autoHeight():Boolean
public function set autoHeight(value:Boolean):void
| autoWidth | property |
autoWidth:Boolean
[read-write]The auto width mode of the component.
Implementation public function get autoWidth():Boolean
public function set autoWidth(value:Boolean):void
| bottom | property |
bottom:Number
[read-write]Anchor padding from the bottom of the container.
Implementation public function get bottom():Number
public function set bottom(value:Number):void
| container | property |
container:Container
[read-write]The component's container in the display hierarchy.
Implementation public function get container():Container
public function set container(value:Container):void
| horizontalCentre | property |
horizontalCentre:Number
[read-write]Anchor padding from the horizontal centre of the container.
Implementation public function get horizontalCentre():Number
public function set horizontalCentre(value:Number):void
| id | property |
id:String
[read-write]ID of the component. This value becomes the instance name of the object and should not contain any white space or special characters.
Implementation public function get id():String
public function set id(value:String):void
| left | property |
left:Number
[read-write]Anchor padding from the left of the container.
Implementation public function get left():Number
public function set left(value:Number):void
| maxRelativeHeight | property |
maxRelativeHeight:Number
[read-write]The maximum relative height of the component
Implementation public function get maxRelativeHeight():Number
public function set maxRelativeHeight(value:Number):void
| maxRelativeWidth | property |
maxRelativeWidth:Number
[read-write]The maximum relative width of the component.
Implementation public function get maxRelativeWidth():Number
public function set maxRelativeWidth(value:Number):void
| maxSpareHeight | property |
maxSpareHeight:Number
[read-write]The maximum spare height of the component
Implementation public function get maxSpareHeight():Number
public function set maxSpareHeight(value:Number):void
| maxSpareWidth | property |
maxSpareWidth:Number
[read-write]The maximum spare width of the component.
Implementation public function get maxSpareWidth():Number
public function set maxSpareWidth(value:Number):void
| minRelativeHeight | property |
minRelativeHeight:Number
[read-write]The minumum relative height of the component.
Implementation public function get minRelativeHeight():Number
public function set minRelativeHeight(value:Number):void
| minRelativeWidth | property |
minRelativeWidth:Number
[read-write]The minumum relative width of the component.
Implementation public function get minRelativeWidth():Number
public function set minRelativeWidth(value:Number):void
| minSpareHeight | property |
minSpareHeight:Number
[read-write]The minumum spare height of the component.
Implementation public function get minSpareHeight():Number
public function set minSpareHeight(value:Number):void
| minSpareWidth | property |
minSpareWidth:Number
[read-write]The minumum spare width of the component.
Implementation public function get minSpareWidth():Number
public function set minSpareWidth(value:Number):void
| relativeHeight | property |
relativeHeight:Number
[read-write]The relative height of the component.
Implementation public function get relativeHeight():Number
public function set relativeHeight(value:Number):void
| relativeWidth | property |
relativeWidth:Number
[read-write]The relative width of the component.
Implementation public function get relativeWidth():Number
public function set relativeWidth(value:Number):void
| right | property |
right:Number
[read-write]Anchor padding from the right of the container.
Implementation public function get right():Number
public function set right(value:Number):void
| round | property |
round:Boolean
[read-write]Implementation
public function get round():Boolean
public function set round(value:Boolean):void
| spareHeight | property |
spareHeight:Number
[read-write]The spare height of the component.
Implementation public function get spareHeight():Number
public function set spareHeight(value:Number):void
| spareWidth | property |
spareWidth:Number
[read-write]The spare width of the component.
Implementation public function get spareWidth():Number
public function set spareWidth(value:Number):void
| top | property |
top:Number
[read-write]Anchor padding from the top of the container.
Implementation public function get top():Number
public function set top(value:Number):void
| verticalCentre | property |
verticalCentre:Number
[read-write]Anchor padding from the vertical centre of the container.
Implementation public function get verticalCentre():Number
public function set verticalCentre(value:Number):void
| Component | () | constructor |
public function Component()
Constructor.
| beforeRender | () | method |
public function beforeRender():Boolean
Called by the container after the sizing and positioning in the container hierarchy has completed just before all invalidated components render themselves. This provides an opportunity for components to force a re-evaluation of size and position by returning false. Default is true.
ReturnsBoolean |
| invalidate | () | method |
public override function invalidate():void
Invalidates the component, forcing it to render on the next
flash.events.Event.RENDER
event.
| render | () | method |
public override function render():void
Renders and re-renders the component display.


A small game with Big dreams
Parallax Paradox is a unique 2D Plataformer game where the player can switch between different layers of the map. Currently only has four full levels but the team is working hard to reach the full potential of the game.This two levels are the top of the iceberg that the game can be .The game is made by Marco Polo Productions, an association of two members, anxious of work and full of ideas with a goal which is to make the game a reality.
We are really good at:
Happiness
Satisfied Players
Broken Dreams
Brief introduction of the members.
Marco Polo Productions has two members, Marc Moreno Pérez and Pol Carrera Catalina, two students of the VideoGame Design and Develop degree in the UPC univesity in Barcelona.


Flathead Cycling presents the
Star Meadows Road Race
Saturday, May 8,2004
Race #4 of the MBRA Race Series
Race #2 of the Women on Wheels Series
Held under USCF permit # 2004-721
A
road race in the scenic Salish Mountains northwest of Kalispell.
 Promoter reserves the right to combine categories depending on turnout.
Directions: Hwy.
93 North through Kalispell. Left on Reserve Dr. (Home Depot on right), West on
Reserve app. 4 miles. Right on Farm-to-Market Rd.(West Valley School will be in
front of you). Drive north app. 16 miles to Star Meadows Rd. Left 1 mile to
Round Meadows XC ski area.
Entry fee is $20. One Day
licenses and MBRA memberships will be available.
Info: Steve
Muller 261-9250


@**
* Copyright (C) 2014 Johannes Unterstein<EMAIL_ADDRESS>unterstein.info
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*@
@()(implicit request: play.api.mvc.Request[Any], lang: Lang)
@import neo4j.models.log.PerformanceLog
@import neo4j.services.Neo4JServiceProvider
@import play.api.i18n.Messages
@scripts = {
}
@css = {
}
@mainPage(Html(Messages("performance")), scripts, css) {


| Name | Last Modified | Actions |
|---|---|---|
| {{worklist.name}} |
{{toDate(worklist.lastModified)}}
{{getWorkflowState(worklist)}} |
n/a |
| Cluster | Last Modified | Concept Id | Concept Name | |
|---|---|---|---|---|
| {{record.clusterId}} | {{toDate(record.lastModified)}} | |||
| {{concept.id}} | {{concept.name}} |
| Concept Id | CUI | Concept Name | Semantic Types | ||
|---|---|---|---|---|---|
| {{concept.id}} | {{concept.terminologyId}} | {{concept.name}} |
{{sty.semanticType}} |
| Terminology {{selectedTerminology.version}} | ||||
| Term Types |
|
|||
|
||||
| Attribute Names |
|
|||
|
||||
| Precedence List | ||||
| Relationship Types |
|
|||
|
||||
| Additional Relationship Types |
|
|||
|


I noticed when programming through phase 0, that some of my triggers are, I don't know enough or I don't understand the instructions or I don't know where to start and usually this leads to a disproportionate emotional response. Another trigger is, how did I let myself get this far behind and how do I catch up, what level of work do I need to produce. Am I learning the right things, am I wasting my time on getting stuck, is my time well spent on the tasks required.
How did you find the Siberian North Railroad exercise (Stop, Breathe, Notice, Reflect, Respond)?I found going through the excersice useful. I can see how doing it retroactively can help with reflecting on the situation and help you deal with future triggers better as you will be better trained. I don't think I would be able to imitate a successful Siberian North Railroad excercise in the moment right now, but it will be something I will try to work towards, now that I understand the framework at least I can stop and breath before reacting and then hopefully take notice of the trigger to then be able to reflect and respond appropiately.


Abazibu understand that money is an important part of our lives, and so we save...
A muzibu's wellbeing is that the core of the Abazibu, so we run the Abazibu Social Fund...
Work without play makes Jack a dull boy, so we play...
Building a strong social bond with each other is something we take seriously...
We love to listen to people's experiences...
And of course, annual dinners are organized...


When the expression editor (expeditor) is enabled as described in Section 2.2, it allows the user to edit expressions entered into the system and move backwards and forwards through a history of entered expressions. This chapter describes a set of parameters that may be used to control various aspects of the expression editor's behavior (Section 14.1), a procedure for binding key sequences to editing commands (Section 14.2), the built-in editing commands (Section 14.3), and mechanisms for creating new editing commands (Section 14.4).
These mechanisms are available through the expression-editor module.
module: expression-editor
libraries: (chezscheme)
The expression-editor module exports a set of bindings for parameters and other procedures that can be used to modify how the expression editor interacts with the user, including the particular keys used to invoke the various editing commands.
Basic use of the expression editor is described in Section 2.2.
global parameter: ee-auto-indent
The value of ee-auto-indent is a boolean value that determines whether the expression editor indents expressions as they are entered. Its default value is #t.
global parameter: ee-standard-indent
The value of ee-standard-indent is a nonnegative fixnum value that determines the amount (in single spaces) by which each expression is indented relative to the enclosing expression, if not aligned otherwise by one of the indenter's other heuristics, when ee-auto-indent is true or when one of the indentation commands is invoked explicitly. It's default value is 2.
global parameter: ee-auto-paren-balance
The value of ee-auto-paren-balance is a boolean value that determines whether the expression editor automatically corrects a close parenthesis or bracket, when typed, to match the corresponding open parenthesis or bracket, if any. Its default value is #t.
global parameter: ee-flash-parens
The value of ee-flash-parens is a boolean value that determines whether the expression editor briefly moves the cursor when an open or close parenthesis or bracket is typed to the matching close or open parenthesis or bracket (if any). Its default value is #t.
global parameter: ee-paren-flash-delay
The value of ee-paren-flash-delay is a nonnegative fixnum value that determines the amount of time (in milliseconds) that the expression editor pauses when the cursor is moved to the matching parenthesis or bracket, if any, when a parenthesis or bracket is entered. The value is ignored if the ee-flash-parens is false. Its default value is 100.
global parameter: ee-default-repeat
The value of ee-default-repeat is a nonnegative fixnum value that determines the number of of times the next command is repeated after the ee-command-repeat editing command (bound to Esc-^U by default) is used and not followed by a sequence of digits. It's default value is 4.
The value of ee-noisy is a boolean value that determines whether the expression editor emits a beep (bell) when an error occurs, such as an attempt to find the matching delimiter for a non-delimiter character. Its default value is #f.
global parameter: ee-history-limit
The value of ee-history-limit is a nonnegative fixnum value that determines the number of history entries retained by the expression editor during and across sessions. Only the last (ee-history-limit) entries are retained.
global parameter: ee-common-identifiers
The value of ee-common-identifiers is list of symbols that are considered common enough that they should appear early when one of the incremental identifier-completion editing commands is invoked. Its default value contains a few dozen entries. They are all more than a few characters long (under the theory that users will most likely type short ones out fully) and all would appear later than they likely should when incremental identifier-completion is used.
Key bindings are established via ee-bind-key. The default key bindings are described in Section 14.3.
procedure: (ee-bind-key key procedure)
returns: unspecified
The ee-bind-key procedure is used to add to or change the set of key bindings recognized by the expression editor.
The key must be a character or string; if it is a string, it must have the following form.
| <key-string> | "<key-char>+" |
where
| <key-char> | \\e (specifying an escape character) | |
| | | ^x (specifying control-x) | |
| | | \\^ (specifying caret) | |
| | | \\\\ (specifying back slash) | |
| | | plain char (any character other than \ or ^) |
Note that each double-backslash in the syntax actually denotes just one backslash in the string.
For example, the key "\\eX" represents the two-character sequence Escape-x, i.e., the "escape" key followed by the (capital) "X" key. Similarly, they key "\\e^X" represents the two-character sequence Escape-Control-x, i.e., the "escape" key followed by Control-X.
Character keys and string keys consisting of a single plain character always represent a single keystroke.
The procedure argument should normally be one of the built-in editing commands described below. It is also possible to define new editing commands with ee-string-macro and ee-compose.
The editing commands are grouped into sections according to usage. Each is listed along with the default character sequence or sequences by which it may be invoked.
Insertion commands
command: ee-insert-self
key(s): most printing characters
Inserts the entered character into the entry.
command: ee-insert-paren
key(s): (, ), [, ]
Inserts the entered parenthesis or bracket into the entry.
If the parameter ee-auto-paren-balance is true, the editor corrects close delimiters if necessary to balance existing open delimiters, when a matching open delimiter can be found.
If the parameter ee-flash-parens is true, the editor briefly moves the cursor to the matching delimiter, if one can be found, pausing for an amount of time controlled by the parameter ee-paren-flash-delay. If the matching delimiter is not presently displayed, the cursor is flashed to the upper-left or lower-left corner of the displayed portion of the entry, as appropriate.
The behavior of this command is undefined if used for something other than a parenthesis or bracket. parentheses and brackets.
command: ee-newline
key(s): none
Inserts a newline at the cursor position, moves to the next line, and indents that line if the parameter ee-auto-indent is true. Does nothing if the entry is empty. See also ee-newline/accept.
command: ee-open-line
key(s): ^O
Inserts a newline at the cursor position and indents the next line, but does not move to the next line.
command: ee-yank-kill-buffer
key(s): ^Y
Inserts the contents of the kill buffer, which is set by the deletion commands described below.
command: ee-yank-selection
key(s): ^V
Inserts the contents of the window system's current selection or paste buffer. When running in a shell window under X Windows, this command requires that the DISPLAY environment variable be set to the appropriate display.
Cursor movement commands
command: ee-backward-char
key(s): leftarrow, ^B
Moves the cursor left one character.
command: ee-forward-char
key(s): rightarrow, ^F
Moves the cursor right one character.
command: ee-next-line
key(s): downarrow, ^N
Moves the cursor down one line (and to the left if necessary so that the cursor does not sit beyond the last possible position). If the cursor is at the end of the current entry, and the current entry has not been modified, this command behaves like ee-history-fwd.
command: ee-previous-line
key(s): uparrow, ^P
Moves the cursor up one line (and to the left if necessary so that the cursor does not sit beyond the last possible position). If the cursor is at the top of the current entry, and the current entry has not been modified, this command behaves like ee-history-bwd.
command: ee-beginning-of-line
key(s): home, ^A
Moves the cursor to the first character of the current line.
command: ee-end-of-line
key(s): end, ^E
Moves the cursor to the right of the last character of the current line.
command: ee-beginning-of-entry
key(s): escape-<
Moves the cursor to the first character of the entry.
command: ee-end-of-entry
key(s): escape->
Moves the cursor to the right of the last character of the entry.
command: ee-goto-matching-delimiter
key(s): escape-]
Moves the cursor to the matching delimiter. Has no effect if the character under the cursor is not a parenthesis or bracket or if no matching delimiter can be found.
command: ee-flash-matching-delimiter
key(s): ^]
Moves the cursor briefly to the matching delimiter, if one can be found, pausing for an amount of time controlled by the parameter ee-paren-flash-delay. If the matching delimiter is not presently displayed, the cursor is flashed to the upper-left or lower-left corner of the displayed portion of the entry, as appropriate.
command: ee-exchange-point-and-mark
key(s): ^X-^X
Moves the cursor to the mark and leaves the mark at the old cursor position. (The mark can be set with ee-set-mark.)
command: ee-forward-sexp
key(s): escape-^F
Moves the cursor to the start of the next expression.
command: ee-backward-sexp
key(s): escape-^B
Moves the cursor to the start of the preceding expression.
command: ee-forward-word
key(s): escape-f, escape-F
Moves the cursor to the end of the next word.
command: ee-backward-word
key(s): escape-b, escape-B
Moves the cursor to the start of the preceding word.
command: ee-forward-page
key(s): pagedown, ^X-]
Moves the cursor down one screen page.
command: ee-backward-page
key(s): pageup, ^X-[
Moves the cursor up one screen page.
Deletion commands
command: ee-delete-char
key(s): delete
Deletes the character under the cursor.
See also ee-eof/delete-char.
command: ee-backward-delete-char
key(s): backspace (rubout), ^H
Deletes the character to the left of the cursor.
command: ee-delete-line
key(s): ^U
Deletes the contents of the current line, leaving behind an empty line. When used on the first line of a multiline entry of which only the first line is displayed, i.e., immediately after history movement, ee-delete-line deletes the contents of the entire entry, like ee-delete-entry (described below).
command: ee-delete-to-eol
key(s): ^K, escape-K
If the cursor is at the end of a line, joins the line with the next line, otherwise deletes from the cursor position to the end of the line.
command: ee-delete-between-point-and-mark
key(s): ^W
Deletes text between the current cursor position and the mark. (The mark can be set with ee-set-mark.)
command: ee-delete-entry
key(s): ^G
Deletes the contents of the current entry.
command: ee-reset-entry
key(s): ^C
Deletes the contents of the current entry and moves to the end of the history.
command: ee-delete-sexp
key(s): escape-^K, escape-delete
Deletes the expression that starts under the cursor, or if no expression starts under the cursor, deletes up to the next expression.
command: ee-backward-delete-sexp
key(s): escape-backspace (escape-rubout), escape-^H
Deletes the expression to the left of the cursor.
Identifier/filename completion commands
These commands perform either identifier or filename completion. Identifier completion is performed outside of a string constant, and filename completion is performed within a string constant. (In determining whether the cursor is within a string constant, the expression editor looks only at the current line and so can be fooled by string constants that span multiple lines.)
command: ee-id-completion
key(s): none
Inserts the common prefix of possible completions of the identifier or filename immediately to the left of the cursor. Identifier completion is based on the identifiers defined in the interaction environment. When there is exactly one possible completion, the common prefix is the completion. This command has no effect if no filename or identifier prefix is immediately the left of the cursor or if the possible completions have no common prefix. If run twice in succession, a list of possible completions is displayed.
See also ee-id-completion/indent.
command: ee-next-id-completion
key(s): ^R
Inserts one of the possible completions of the identifier or filename immediately to the left of the cursor. Identifier completion is based on the identifiers defined in the interaction environment. If run twice or more in succession, this command cycles through all of the possible completions. The order is determined by the following heuristics: appearing first are identifiers whose names appear in the list value of the parameter ee-common-identifiers; appearing second are identifiers bound in the interaction environment but not bound in the scheme-environment (i.e., identifiers defined by the user), and appearing last are those in the scheme environment. Within the set of matches appearing in the ee-common-identifiers list, those listed earliest are shown first; the order is alphabetical within the other two sets.
See also ee-next-id-completion/indent.
History movement commands
The expression editor maintains a history of entries during each session. It also saves the history across sessions unless this behavior is disabled via the command-line argument "--eehistory off."
When moving from one history entry to another, only the first line of each multi-line entry is displayed. The redisplay command (which ^L is bound to by default) can be used to display the entire entry. It is also possible to move down one line at a time to expose just part of the rest of the entry.
command: ee-history-bwd
key(s): escape-uparrow, escape-^P
Moves to the preceding history entry if the current entry is empty or has not been modified; otherwise, has no effect.
See also ee-previous-line.
command: ee-history-fwd
key(s): escape-downarrow, escape-^N
Moves to the next history entry if the current entry is empty or has not been modified; otherwise, has no effect.
See also ee-next-line.
command: ee-history-bwd-prefix
key(s): escape-p
Moves to the closest previous history entry, if any, that starts with the sequence of characters that makes up the current entry. May be used multiple times to search for same prefix.
command: ee-history-fwd-prefix
key(s): escape-n
Moves to the closest following history entry, if any, that starts with the sequence of characters that makes up the current entry. May be used multiple times to search for same prefix.
command: ee-history-bwd-contains
key(s): escape-P
Moves to the closest previous history entry, if any, that contains within it the sequence of characters that makes up the current entry. May be used multiple times to search for same content.
command: ee-history-fwd-contains
key(s): escape-N
Moves to the closest following history entry, if any, that contains within it the sequence of characters that makes up the current entry. May be used multiple times to search for same content.
Indentation commands
command: ee-indent
key(s): escape-tab
Re-indents the current line.
See also ee-next-id-completion/indent.
command: ee-indent-all
key(s): escape-q, escape-Q, escape-^Q
Re-indents each line of the entire entry.
Miscellaneous commands
Causes the expression editor to invoke the Scheme reader on the contents of the entry. If the read is successful, the expression is returned to the waiter; otherwise, an error message is printed, the entry redisplayed, and the cursor left (if possible) at the start of the invalid subform.
See also ee-newline/accept.
Causes end-of-file to be returned from the expression editor, which in turn causes the waiter to exit. Ignored unless entry is empty.
See also ee-eof/delete-char.
command: ee-redisplay
key(s): ^L
Redisplays the current expression. If run twice in succession, clears the screen and redisplays the expression at the top of the screen.
command: ee-suspend-process
key(s): ^Z
Suspends the current process in shells that support job control.
command: ee-set-mark
key(s): ^@, ^space
Sets the mark to the current cursor position.
command: ee-command-repeat
key(s): escape-^U
Repeats the next command n times. If the next character typed is a digit, n is determined by reading up the sequence of the digits typed and treating it as a decimal number. Otherwise, n is the value of the parameter ee-default-repeat.
Combination commands
command: ee-newline/accept
key(s): enter, ^M
Behaves like ee-accept if run at the end (not including whitespace) of an entry that starts with a balanced expression; otherwise, behaves like ee-newline.
command: ee-id-completion/indent
key(s): tab
Behaves like ee-id-completion if an identifier (outside a string constant) or filename (within a string constant) appears just to the left of the cursor and the last character of that identifier or filename was just entered; otherwise, behaves like ee-indent.
If an existing identifier or filename, i.e., not one just typed, appears to the left of the cursor, the first use of this command behaves like ee-newline, the second consecutive use behaves like ee-id-completion, and the third behaves like a second consecutive use of ee-id-completion.
command: ee-next-id-completion/indent
key(s): none
Behaves like ee-next-id-completion if an identifier (outside a string constant) or filename (within a string constant) appears just to the left of the cursor and the last character of that identifier or identifier was just entered; otherwise, behaves like ee-indent.
command: ee-eof/delete-char
key(s): ^D
Behaves like ee-delete-char if the entry is nonempty; otherwise, behaves like ee-eof. If the entry is nonempty and this command is run twice or more in succession, it does nothing once the entry becomes empty. This is to prevent accidental exit from the waiter in cases where the command is run repeatedly (perhaps with the help of a keyboard's auto-repeat feature) to delete all of the characters in an entry.
procedure: (ee-string-macro string)
returns: a new editing command
The new editing command produced inserts string before the current cursor position.
Two string macros are predefined:
| (ee-string-macro "(define ") | escape-d |
| (ee-string-macro "(lambda ") | escape-l |
procedure: (ee-compose ecmd ...)
returns: a new editing command
Each ecmd must be an editing command.
The new editing command runs each of the editing commands ecmd ... in sequence.
For example, the following expression binds ^X-p to an editing command that behaves like ee-history-bwd-prefix but leaves the cursor at the end of the expression rather than at the end of the first line, causing the entire entry to be displayed.
(let ()
(import expression-editor)
(ee-bind-key "^Xp"
(ee-compose ee-history-bwd ee-end-of-entry)))
A command such as ee-id-completion that performs a different action when run twice in succession will not recognize that it has been run twice in succession if run as part of a composite command.
Chez Scheme Version 9 User's Guide
Copyright © 2016 Cisco Systems, Inc.
Licensed under the Apache License Version 2.0
(full copyright notice.).
Revised June 2016 for Chez Scheme Version 9.4
about this book


The tokamak equilibrium problem where the shape of the LCFS is given is called ﬁxed boundary equilibrium problem. I wrote a numerical code that uses the iterative metric method[11] to solve this kind of equilibrium problem. Figure 30 describes the steps involved in the iterative metric method.


How did the 'process over product' concept affect the way you tackled the site redesign and rebuild? I find it hard to not focus on the design (I still am working on it!) But the concept really made me just focus to get the pages functioning right and fully responsive, instead of worrying about the overall look- I think that these two almost work together- the website design and responsive design. I feel like I will be spending a bit more time of the look of the site over the next while.
What did you think about mediation before reading chapter 2? I guess most of my life I thought meditation was something one did for a very long time- I.e an hour or more at a time. I thought it was predominantly for spiritual hippy people and not for people like Meng who work at google, or for the students that go through EDA to learn.
What new things have you learnt about mediation?
That it doesn’t have to be done the traditional way, one can generally do their own style, in their own way, however is most comfortable, and wherever you want to do it. That it is good for us both emotionally and physically, it can help with all sorts of stresses and even physical medical conditions.
Did any of the suggested mediation techniques stand out to you?
I liked the 'Imagine you are a mountain' when meditating.
Any other musings?
'Breathing as though your life depended' on it is pretty good way of looking at it.


No Code. Should render empty.
White space two lines. Should render nothing as they are chopped
White space only. Should render whitespace minus line breaks minus chopped lines.
Multiple classes. Should still render as Javascript
var myMootools = new Class({});
No class should render with standard fuel/flame
var myMootools = new Class({});


--- layout: post title: Message strings (Localisation) categories: [] tags: serviceapi status: publish type: post published: true meta: {} ---
The .Net SDK and the ServiceAPI allow you access to many of the localized strings used by RM. To fetch a list of messages from the ServiceAPI send a regular expression containing all the message ids you are interested in to the Localisation service.
http://localhost/ServiceAPI/Localisation?format=json&MatchMessages=(^vb_tio_Help$|^vb_tio_OK|^vb_tio_Cancel$|^vb_tio_MessageFormat$|^vb_TIO_RecordMetaData$)
Note in the ServiceAPI request above:


--- title: Week 9 - How to Ask Questions layout: post ---
No matter what field you’re in, no matter what problem you’re trying to solve, the best thing you can do is to figure out what the question is first.
The toughest part is framing the question.
Basics
What are you really trying to answer?
I find myself stuck on a problem sometimes, and all I know is “it’s not working.” How do I find the answer to this? It’s not even a question yet, it’s just a problem. I can’t search for “my code is not working.”
We need more information. What type of problem is this? What language are you working in?
Ok, “problem in Javascript.” That’s a start.
What are you trying to accomplish?
“I want to return the property key of my object literal.” Not bad. There are some keywords that others can easily identify.
One really helpful tip is this: Have you tried something already?
Usually one is more inclined to answer a question if they are given a context as to what you have attempted already. If you haven’t tried to solve the problem yourself, then you shouldn’t be asking a question yet. If you have, great! That’s more information!
“I have tried this: ________” “I encountered these problems…”
First Impressions
It’s important to really frame the question well at the start. That’s your first impression. You want to be concise and get to the point, but also include any major information for context.
Including Code
Then if there is code that might be helpful, you should include it, but making sure you only include what is relevant, and everything that is relevant. In other words, some things you can leave out, some things you may want to include.
For example, if you have a problem with your script, you may need to include your html and/or stylesheet. Just make sure that someone reading it for the first time can read and understand it clearly.
Frame of mind
Asking programming questions is not unlike asking questions to your supervisor or manager. You have to show initiative, that you have attempted to solve the problem yourself, and only go to them if you have something to show. You have to assume they are always busy, and this is interrupting whatever they are doing to help you.
Be grateful! There are of course people who are happy to help, but I find that I am more happy to help someone who appreciates the answer.
Personal example time:
Does anybody know any good resources to learn how to integrate JavaScript into HTML + CSS? And should we be diving into jQuery too?
The answer I received: You will be doing plenty of JQuery in phase 2, I would focus on learning the basics of JS now. You link a JS page just like a CSS page only using the script tag. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
What I really wanted to know was how to manipulate DOM objects using JavaScript. I later learned that jQuery was the easiest way to learn this.
What I failed to do was frame the question correctly. I remember feeling stuck because I did not know the correct technical terms for what I wanted to do, because I didn’t know what I wanted to do! I should have at least given an example of what I wanted to accomplish. Did I want to move objects on a page? Did I want to create buttons and then make things appear?
Looking back, if I had an example, I probably could have done a google search and at least attempted to make something happen, but I didn’t, and all I wanted was “some kind of resource” which is entirely vague.
Spending a few minutes to figure out what kind of problem you are having, identify some keywords, explain what you are trying to accomplish, and then giving an example of something you’ve tried can save you hours in the long run.
Resources:


Commodore 64
Preceded by the Commodore VIC-20 and Commodore PET, the C64 took its name from its 64 kilobytes (65,536 bytes) of RAM. With support for multicolor sprites and a custom chip for waveform generation, the C64 could create superior visuals and audio compared to systems without such custom hardware.
The C64 dominated the low-end computer market for most of the 1980s. For a substantial period (1983–1986), the C64 had between 30% and 40% share of the US market and two million units sold per year, outselling IBM PC compatibles, Apple computers, and the Atari 8-bit family of computers. Sam Tramiel, a later Atari president and the son of Commodore's founder, said in a 1989 interview, "When I was at Commodore we were building 400,000 C64s a month for a couple of years." In the UK market, the C64 faced competition from the BBC Micro and the ZX Spectrum, but the C64 was still one of the two most popular computers in the UK.
Part of the Commodore 64's success was its sale in regular retail stores instead of only electronics or computer hobbyist specialty stores. Commodore produced many of its parts in-house to control costs, including custom integrated circuit chips from MOS Technology. It has been compared to the Ford Model T automobile for its role in bringing a new technology to middle-class households via creative and affordable mass-production. Approximately 10,000 commercial software titles have been made for the Commodore 64 including development tools, office productivity applications, and video games. C64 emulators allow anyone with a modern computer, or a compatible video game console, to run these programs today. The C64 is also credited with popularizing the computer demoscene and is still used today by some computer hobbyists. In 2011, 17 years after it was taken off the market, research showed that brand recognition for the model was still at 87%.
Wikipedia entry


The workshop is preceded by an open challenge in Question Answering over Linked Data, in order to provide a benchmark for comparing different approaches and systems that mediate between a user (expressing his or her information need in natural language) and semantic data.
Full description: qald-2-challenge.pdf (last updated: March 26, 2012)
| Release of training dataset | January 31 |
| Release of test set | March |
| Submission of results | April 1 |
DBpedia 3.7
MusicBrainz (RDF export):
DBpedia:
MusicBrainz:
For both training and the test phase, results can be uploaded with the following evaluation form:


|
Perl Weekly
Issue #188 - 2015-03-02 - The First Days of Christmas Scheduled to be in August
latest | archive | by Yanick Champoux
|
|
This week, we have the releases of two of the big web frameworks, a new Strawberry Perl, and invitations to upcoming Hackatons both for Perl 5 and Perl 6. For the latter, the pressure is building: the August Hackaton in Switzerland is touted as the last one before the dev version of Perl 6 1.0 goes out. Enjoy! ~ `/anick
|
|
|
|
Sponsors
|
InsideSales.com - Pass our "Perl Challenge" & Win a $100 Amazon Gift Card
Our yummy Perl codebase handles millions of emails in production each week! We're growing like crazy, doubling in revenue and size annually. We want you to join our team in Utah. Pass our "Perl Challenge" to win a $100 Amazon gift card and an interview. Hires will receive a sizable signing bonus.
|
|
|
|
|
Interseted in sponsored ads in the Perl Weekly? Check out the details.
|
Announcements
|
Perl and the Company Culture
by Mark Keating
Mark wants to make some noise and promote companies, big and small, that use Perl. For that, he asks for your help to corral the names of all organizations that fit the bill.
|
|
|
Adopting in the hope to improve maintenance
by Graham Ollis (PLICEASE)
Graham would like to provide a warm, cozy new home for a handful of modules. But, of course, this can't happen without the blessing of their original owners, so he's sending an announcement flare.
|
|
|
|
|
|
|
A big week in Oslo
by Damian Conway (DCONWAY)
Damian is going to Norway, and he's going to be a busy, busy man. Lots of talks and presentations on his plate for the days to come.
|
|
|
Strawberry Perl <IP_ADDRESS> released
A new version of Strawberry Perl is out. Amongst other goodies, this version comes with all the major DBI drivers -- MySQL, PostgreSQL, Oracle, MS SQL -- working out of the box.
|
|
YAPC::NA::2015 Hackathons Announced
Perl 5, Perl 6, hardware, there will be hackatons for them all at YAPC::NA. If you plan to join the fun, RSVP so that the organizers know what to expect.
|
|
|
|
Articles
|
|
|
Perl developers dispel doubts about the code's longevity
You know the usual question. "Is Perl dead? Dying? Looking pale? Perhaps pining for the fjords?" TechWorld went out and interviewed some of the members of the community in this latest attempt to answer the eternal question.
|
|
Testing
|
The Role of Critique
by Mark Fowler (MARKF)
If a role is defining a private method that it is not using itself, Perl::Critic is wont to spuriously tut-tut at you. Or was, as Mark decided that enough was enough, and crafted a patch that takes care of that.
|
|
|
Another note to my future self on DBIx::Class
While working on the creation of a DBIx-based test database, James realized that not everything is perfectly documented. He's jolting down the missing pieces of the puzzle here for the benefit of his future self (and us, natch).
|
|
Code
|
|
|
|
|
IO::Socket::Timeout: socket timeout made easy
by Damien Krotkine (DAMS)
For most of us, just getting the web page is good enough. But for, say, Booking.com, there's also a need for speed. Damien shares with us how they tweak and interact with socket timeouts as one way to quench this thirst of velocity.
|
|
|
Public Voting through Twitter
by Kivanc Yazan
Kivan was recently involved in a charity party where voting for things like dance and songs was done via Twitter. Brilliant idea. And he came up with a script to take the humdrum off tallying the results too.
|
|
|
Perl Maven Tutorials
|
|
|
Weekly collections
|
|
|
|
|
|
|
You know, you could get the Perl Weekly right in your mailbox. Every Week. Free of charge!
|


The application allows user to upload local files to the cloud. A unique entry is created for the file and distributed to the neighbouring nodes in the system.
Lets try uploading entries.
Searching for an entry currently is based on the category in which the entry is located. After specifying the category, we locate the partitions in the category and fetch matching entries.


An AB test is a statistical significance test in which two populations are compared to see if they differ significantly on a single characteristic. A sample size of 30 or more is recommended.
Group 1
Group 2


In this article you will learn how to implement builder design pattern. This is one of structural patterns. You can use it when you need to have control over how complex objects would be created at runtime. This pattern gives you step by step approach on the object creation process. This is useful if you want to reuse the same creation process to build different representations. I’ll demonstrate the implementation of the pattern on simplified real word example. And I’ll explain it step by step.
To show you the pattern I created the system of creating two types of enemies, each process of creation takes multiple steps, that’s good opportunity for using builder.
UML diagram:
- IEnemy - Builder interface
- EnemyTypeA and EnemyTypeB- Concrete Builder
- Enemy- Product
- EnemyCreator - Director
So first let’s create an enemy Class, we will instantiate objects of this class in Concrete Builders.
class Enemy
{
public string model;
public string behaviour;
public string components;
Here we have three public variables just to demonstrate the example.
Next we need Builder interface that will contains all the method that will be implemented by Enemies Classes. And we have Get Enemy method that will return the Enemy Class instance after competing the construction process.
interface IEnemy
{
void SelectModel();
void SelectBehaviour();
void AddComponents();
Enemy GetEnemy();
Next step is to create Classes based on the interface. Each class will have unique implementation of the interface methods. In order to get access to Enemy Class properties we need to create instance of this Class.
class EnemyTypeA : IEnemy
{
Enemy enemy = new Enemy();
public void AddComponents()
{
enemy.components="Components Added";
}
public void SelectBehaviour()
{
enemy.behaviour= "Behaviour Type A Selected";
}
public void SelectModel()
{
enemy.model = "Body Type A Selected";
}
public Enemy GetEnemy()
{
return enemy;
}
}
//EnemyTypeB
class EnemyTypeB : IEnemy
{
Enemy enemy = new Enemy();
public void AddComponents()
{
enemy.components = "Components Added";
}
public void SelectBehaviour()
{
enemy.behaviour = "Behaviour Type B Selected";
}
public void SelectModel()
{
enemy.model = "Body Type B Selected";
}
public Enemy GetEnemy()
{
return enemy;
}
Now it’s time for creating Director that will contain the logic behind creating new enemy. In Class constructor we pass IEnemy interface, this way we can pass any Class that inhirates form this interface.
class EnemyCreator
{
private readonly IEnemy enemyBuilder;
public EnemyCreator( IEnemy enemyType)
{
enemyBuilder = enemyType;
}
public Enemy ConstructEnemy()
{
enemyBuilder.SelectBehaviour();
enemyBuilder.SelectModel();
enemyBuilder.AddComponents();
return enemyBuilder.GetEnemy();
}
Construct Enemy method return instance of Enemy Class with new properties.
Last thing to complete the implementation is to create Client Class that will create instances of each enemy type.
class Program
{
static void Main(string[] args)
{
var enemyCreator = new EnemyCreator(new EnemyTypeA());
var enemy = enemyCreator.ConstructEnemy();
enemy.ShowInfo();
Console.WriteLine("_______________________");
enemyCreator = new EnemyCreator(new EnemyTypeB());
enemy = enemyCreator.ConstructEnemy();
enemy.ShowInfo();
Console.ReadLine();
}
To conclude, Builder pattern Separates the construction of a complex object from its representation so that the same construction process can create different representations. I hope you found it useful and you will implement this pattern to you programs. I next article I’ll cover another exciting design patter. Stay Awesome!


Front-end dev (Vue.js)
Jan 2014 – Sept 2018, Location Kyiv, Ukraine
Jan 2010 – Jan 2014 Employment, Location Kyiv, Ukraine
Nov 2008 – Feb 2010 Employment , Location Kyiv, Ukraine
Sep 2005 – Nov 2008 Employment, Location Kyiv, Ukraine
Computer sciences, Master
Course: FullStack JS/React/PHP


in this case, when no libraries are detected the global variable ['wasm-imagemagick'] is available, so you can use it like this:
['wasm-imagemagick']
const { execute, loadImageElement, buildInputFile } = window['wasm-imagemagick']
Image URL:
Commands.


« CSS « CSS Reference
If a
background-image
is specified, background-attachment
determines whether that image's position is fixed within the viewport, or scrolls along with its containing block.
visual
background-attachment: <attachment>[, <attachment>]*
Where:
scroll | fixed | local
Gecko 1.9.2 note
Gecko 1.9.2 introduced support for multiple background images; prior to 1.9.2, only one value is supported.
scroll
is specified, the background image will scroll within the viewport along with the block the image is contained within.fixed
is specified, the background image will not scroll with its containing element, instead remaining stationary within the viewport.body { background-image: url("images/cartooncat.png"); background-attachment: fixed; }
Gecko 1.9.2 supports multiple background images. You can specify a different <attachment>
for each background, separated by commas:
body { background-image: url("img1.png"), url("img2.png"); background-attachment: scroll, fixed; }
Each image is matched with the corresponding attachment type, from first specified to last.
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 1.0 | 1.0 (1.7 or earlier) | 4.0 | 3.5 | 1.0 |
| Multiple backgrounds | 1.0 | 3.6 (1.9.2) | 9.0 | 10.5 | 1.3 |
local | 4.0 | -- [1] | 9.0 | 10.5 | 5.0 |
| Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Basic support | 2.1 | 1.0 (1.9.2) | ? | 10.0 | 3.2 |
| Multiple backgrounds | 2.1 | 1.0 (1.9.2) | ? | 10.0 | 3.2 |
local | ? | -- [2] | ? | ? | ? |


WITNESS LIST Economic Development Committee April 29, 1997-10:30A SB 265 For: Giddings, Helen, Rep. (Self) On: Albright, Jim (TX Dept. of Commerce) SB 459 For: Lewis, Glenn, Rep. (Self) SB 747 For: Brown, Tommy,Mayor (Coal. for Com/Eco Dev.) Bushell, Gary (Corpus Christi Bus.All.) Newman, Joe (TEDC) Wilson, Peggy M. (Cedar Hill City Council) SB 932 For: Kamm, Robert (TX Assn. Bus./C.O.Cs) On: Lanford, Lane (TX Dept. of Commerce) Wattles, Dan (TX Dept. of Commerce) SB 1490 On: Geballe, Leslie (TWC) SB 1519 On: Geballe, Leslie (TWC)


1 In the second year of Darius the king, in the sixth month, in the first day of the month, came the word of the LORD by Haggai the prophet unto Zerubbabel the son of Shealtiel, governor of Judah, and to Joshua the son of Josedech, the high priest, saying,
2 Thus speaketh the LORD of hosts, saying, This people say, The time is not come, the time that the LORD's house should be built.
3 Then came the word of the LORD by Haggai the prophet, saying,
4 Is it time for you, O ye, to dwell in your cieled houses, and this house lie waste?
5 Now therefore thus saith the LORD of hosts; Consider your ways.
6 Ye have sown much, and bring in little; ye eat, but ye have not enough; ye drink, but ye are not filled with drink; ye clothe you, but there is none warm; and he that earneth wages earneth wages to put it into a bag with holes.
7 Thus saith the LORD of hosts; Consider your ways.
8 Go up to the mountain, and bring wood, and build the house; and I will take pleasure in it, and I will be glorified, saith the LORD.
9 Ye looked for much, and, lo, it came to little; and when ye brought it home, I did blow upon it. Why? saith the LORD of hosts. Because of mine house that is waste, and ye run every man unto his own house.
10 Therefore the heaven over you is stayed from dew, and the earth is stayed from her fruit.
11 And I called for a drought upon the land, and upon the mountains, and upon the corn, and upon the new wine, and upon the oil, and upon that which the ground bringeth forth, and upon men, and upon cattle, and upon all the labour of the hands.
12 Then Zerubbabel the son of Shealtiel, and Joshua the son of Josedech, the high priest, with all the remnant of the people, obeyed the voice of the LORD their God, and the words of Haggai the prophet, as the LORD their God had sent him, and the people did fear before the LORD.
13 Then spake Haggai the LORD's messenger in the LORD's message unto the people, saying, I am with you, saith the LORD.
14 And the LORD stirred up the spirit of Zerubbabel the son of Shealtiel, governor of Judah, and the spirit of Joshua the son of Josedech, the high priest, and the spirit of all the remnant of the people; and they came and did work in the house of the LORD of hosts, their God,
15 In the four and twentieth day of the sixth month, in the second year of Darius the king.
1 In the seventh month, in the one and twentieth day of the month, came the word of the LORD by the prophet Haggai, saying,
2 Speak now to Zerubbabel the son of Shealtiel, governor of Judah, and to Joshua the son of Josedech, the high priest, and to the residue of the people, saying,
3 Who is left among you that saw this house in her first glory? and how do ye see it now? is it not in your eyes in comparison of it as nothing?
4 Yet now be strong, O Zerubbabel, saith the LORD; and be strong, O Joshua, son of Josedech, the high priest; and be strong, all ye people of the land, saith the LORD, and work: for I am with you, saith the LORD of hosts:
5 According to the word that I covenanted with you when ye came out of Egypt, so my spirit remaineth among you: fear ye not.
6 For thus saith the LORD of hosts; Yet once, it is a little while, and I will shake the heavens, and the earth, and the sea, and the dry land;
7 And I will shake all nations, and the desire of all nations shall come: and I will fill this house with glory, saith the LORD of hosts.
8 The silver is mine, and the gold is mine, saith the LORD of hosts.
9 The glory of this latter house shall be greater than of the former, saith the LORD of hosts: and in this place will I give peace, saith the LORD of hosts.
10 In the four and twentieth day of the ninth month, in the second year of Darius, came the word of the LORD by Haggai the prophet, saying,
11 Thus saith the LORD of hosts; Ask now the priests concerning the law, saying,
12 If one bear holy flesh in the skirt of his garment, and with his skirt do touch bread, or pottage, or wine, or oil, or any meat, shall it be holy? And the priests answered and said, No.
13 Then said Haggai, If one that is unclean by a dead body touch any of these, shall it be unclean? And the priests answered and said, It shall be unclean.
14 Then answered Haggai, and said, So is this people, and so is this nation before me, saith the LORD; and so is every work of their hands; and that which they offer there is unclean.
15 And now, I pray you, consider from this day and upward, from before a stone was laid upon a stone in the temple of the LORD:
16 Since those days were, when one came to an heap of twenty measures, there were but ten: when one came to the pressfat for to draw out fifty vessels out of the press, there were but twenty.
17 I smote you with blasting and with mildew and with hail in all the labours of your hands; yet ye turned not to me, saith the LORD.
18 Consider now from this day and upward, from the four and twentieth day of the ninth month, even from the day that the foundation of the LORD's temple was laid, consider it.
19 Is the seed yet in the barn? yea, as yet the vine, and the fig tree, and the pomegranate, and the olive tree, hath not brought forth: from this day will I bless you.
20 And again the word of the LORD came unto Haggai in the four and twentieth day of the month, saying,
21 Speak to Zerubbabel, governor of Judah, saying, I will shake the heavens and the earth;
22 And I will overthrow the throne of kingdoms, and I will destroy the strength of the kingdoms of the heathen; and I will overthrow the chariots, and those that ride in them; and the horses and their riders shall come down, every one by the sword of his brother.
23 In that day, saith the LORD of hosts, will I take thee, O Zerubbabel, my servant, the son of Shealtiel, saith the LORD, and will make thee as a signet: for I have chosen thee, saith the LORD of hosts.
| << Zephaniah | Contents | Zechariah >> |


Shaun Limbeek
Portfolio
About
Contact
How to get in touch
Email:
LinkedIn:
Other:
Email address:
Message:
Submit
Shaun Limbeek
Github
Portfolio
Medium


Glue-Stack
The Glue-stack is a framework to create web-applications. It combines Express, Browserify, Handlebars, Riot.js and PostCSS to generate static HTML. The dynamic parts are displayed using Riot.js and may be loaded in JSON over XHR or WebSockets.
Altboiler is an alternative Boilerplate for the Meteor platform. I made the package in reaction to a StackOverflow question titled "Meteor: Eliminate render-blocking JavaScript and CSS in above-the-fold content". I read big parts of the Meteor-core in the Process. Especially the boilerplating parts, to figure out how I could replace the standard boilerplate with something that would perform better.
It was a very interesting exprerience and my first time diving this deep into a OSS frameworks source code.
I basically ended up implementing server-side rendering for Blaze. So the Package lets you serve static HTML with some undynamic content and load the Meteor core at the bottom of the page. I got the following results from a Google-Pagespeed test on the example-page:
So the advantages are pretty clear. Better load times, better searchengine ratings and best of all, a way to provide a gracefull fallback for no-script browsers.
Today the package has a total of 29 installs and 21 Github-Stars. I think there are many reason why the package was so unpoular. The biggest reason was, that I didn't care enough wether anyone would use it or not. Also I realeased 1.0 around the time of the rise of React with its server-side rendering capabilities in the Meteor community.
Anyway, I have moved on. Right now I'm only semi-acively working on one Meteor Project (Redact). My main reasons for leaving the Meteor platform are scalability and performance.


--- layout: default title: Assets permalink: /assets ---
Manage all your favorite assets such as Stablecoins, NFTs and more than 10k+ ERC20 tokens are supported in one secure interface.
Ethereum
Digit41
Uniswap
Chainlink