pdftk − A handy tool for manipulating PDF
pdftk
<input PDF files | - | PROMPT>
[ input_pw <input PDF owner passwords |
PROMPT> ]
[ <operation> <operation arguments> ]
[ output <output filename | - | PROMPT>
]
[ encrypt_40bit | encrypt_128bit ]
[ allow <permissions> ]
[ owner_pw <owner password | PROMPT> ]
[ user_pw <user password | PROMPT> ]
[ flatten ] [ need_appearances ]
[ compress | uncompress ]
[ keep_first_id | keep_final_id ] [
drop_xfa ]
[ verbose ] [ dont_ask | do_ask ]
Where:
<operation> may be empty, or:
[ cat | shuffle | burst | rotate
|
generate_fdf | fill_form |
background | multibackground |
stamp | multistamp |
dump_data | dump_data_utf8 |
dump_data_fields | dump_data_fields_utf8 |
dump_data_annots |
update_info | update_info_utf8 |
attach_files | unpack_files ]
For Complete Help: pdftk --help
If PDF is electronic paper, then pdftk is an electronic staple-remover, hole-punch, binder, secret-decoder-ring, and X-Ray-glasses. Pdftk is a simple tool for doing everyday things with PDF documents. Use it to:
* Merge PDF
Documents or Collate PDF Page Scans
* Split PDF Pages into a New Document
* Rotate PDF Documents or Pages
* Decrypt Input as Necessary (Password Required)
* Encrypt Output as Desired
* Fill PDF Forms with X/FDF Data and/or Flatten Forms
* Generate FDF Data Stencils from PDF Forms
* Apply a Background Watermark or a Foreground Stamp
* Report PDF Metrics, Bookmarks and Metadata
* Add/Update PDF Bookmarks or Metadata
* Attach Files to PDF Pages or the PDF Document
* Unpack PDF Attachments
* Burst a PDF Document into Single Pages
* Uncompress and Re-Compress Page Streams
* Repair Corrupted PDF (Where Possible)
A summary of
options is included below.
−−help, −h
Show this summary of options.
<input PDF files | - | PROMPT>
A list of the input PDF files. If you plan to combine these PDFs (without using handles) then list files in the order you want them combined. Use - to pass a single PDF into pdftk via stdin. Input files can be associated with handles, where a handle is one or more upper-case letters:
<input PDF handle>=<input PDF filename>
Handles are often omitted. They are useful when specifying PDF passwords or page ranges, later.
For example: A=input1.pdf QT=input2.pdf M=input3.pdf
[input_pw <input PDF owner passwords | PROMPT>]
Input PDF owner passwords, if necessary, are associated with files by using their handles:
<input PDF handle>=<input PDF file owner password>
If handles are not given, then passwords are associated with input files by order.
Most pdftk features require that encrypted input PDF are accompanied by the ~owner~ password. If the input PDF has no owner password, then the user password must be given, instead. If the input PDF has no passwords, then no password should be given.
When running in do_ask mode, pdftk will prompt you for a password if the supplied password is incorrect or none was given.
[<operation> <operation arguments>]
Available operations are: cat, shuffle, burst, rotate, generate_fdf, fill_form, background, multibackground, stamp, multistamp, dump_data, dump_data_utf8, dump_data_fields, dump_data_fields_utf8, dump_data_annots, update_info, update_info_utf8, attach_files, unpack_files. Some operations takes additional arguments, described below.
If this optional argument is omitted, then pdftk runs in ’filter’ mode. Filter mode takes only one PDF input and creates a new PDF after applying all of the output options, like encryption and compression.
cat [<page ranges>]
Assembles (catenates) pages from input PDFs to create a new PDF. Use cat to merge PDF pages or to split PDF pages from documents. You can also use it to rotate PDF pages. Page order in the new PDF is specified by the order of the given page ranges. Page ranges are described like this:
<input PDF handle>[<begin page number>[-<end page number>[<qualifier>]]][<page rotation>]
Where the handle identifies one of the input PDF files, and the beginning and ending page numbers are one-based references to pages in the PDF file. The qualifier can be even or odd, and the page rotation can be north, south, east, west, left, right, or down.
If a PDF handle is given but no pages are specified, then the entire PDF is used. If no pages are specified for any of the input PDFs, then the input PDFs’ bookmarks are also merged and included in the output.
If the handle is omitted from the page range, then the pages are taken from the first input PDF.
The even qualifier causes pdftk to use only the even-numbered PDF pages, so 1-6even yields pages 2, 4 and 6 in that order. 6-1even yields pages 6, 4 and 2 in that order.
The odd qualifier works similarly to the even.
The page rotation setting can cause pdftk to rotate pages and documents. Each option sets the page rotation as follows (in degrees): north: 0, east: 90, south: 180, west: 270, left: -90, right: +90, down: +180. left, right, and down make relative adjustments to a page’s rotation.
If no arguments are passed to cat, then pdftk combines all input PDFs in the order they were given to create the output.
NOTES:
* <end page number> may be less than
<begin page number>.
* The keyword end may be used to reference the final
page of a document instead of a page number.
* Reference a single page by omitting the ending page
number.
* The handle may be used alone to represent the entire PDF
document, e.g., B1-end is the same as B.
* You can reference page numbers in reverse order by
prefixing them with the letter r. For example, page
r1 is the last page of the document, r2 is the next-to-last
page of the document, and rend is the first page of the
document. You can use this prefix in ranges, too, for
example r3-r1 is the last three pages of a PDF.
Page Range
Examples without Handles:
1-endeast - rotate entire document 90 degrees
5 11 20 - take single pages from input PDF
5-25oddwest - take odd pages in range, rotate 90 degrees
6-1 - reverse pages in range from input PDF
Page Range
Examples Using Handles:
Say A=in1.pdf B=in2.pdf, then:
A1-21 - take range from in1.pdf
Bend-1odd - take all odd pages from in2.pdf in reverse
order
A72 - take a single page from in1.pdf
A1-21 Beven A72 - assemble pages from both in1.pdf and
in2.pdf
Awest - rotate entire in1.pdf document 90 degrees
B - use all of in2.pdf
A2-30evenleft - take the even pages from the range,
remove 90 degrees from each page’s rotation
A A - catenate in1.pdf with in1.pdf
Aevenwest Aoddeast - apply rotations to even pages, odd
pages from in1.pdf
Awest Bwest Bdown - catenate rotated documents
shuffle [<page ranges>]
Collates pages from input PDFs to create a new PDF. Works like the cat operation except that it takes one page at a time from each page range to assemble the output PDF. If one range runs out of pages, it continues with the remaining ranges. Ranges can use all of the features described above for cat, like reverse page ranges, multiple ranges from a single PDF, and page rotation. This feature was designed to help collate PDF pages after scanning paper documents.
|
burst |
Splits a single input PDF document into individual pages. Also creates a report named doc_data.txt which is the same as the output from dump_data. If the output section is omitted, then PDF pages are named: pg_%04d.pdf, e.g.: pg_0001.pdf, pg_0002.pdf, etc. To name these pages yourself, supply a printf-styled format string via the output section. For example, if you want pages named: page_01.pdf, page_02.pdf, etc., pass output page_%02d.pdf to pdftk. Encryption can be applied to the output by appending output options such as owner_pw, e.g.: |
pdftk in.pdf burst owner_pw foopass
rotate [<page ranges>]
Takes a single input PDF and rotates just the specified pages. All other pages remain unchanged. The page order remains unchaged. Specify the pages to rotate using the same notation as you would with cat, except you omit the pages that you aren’t rotating:
[<begin page number>[-<end page number>[<qualifier>]]][<page rotation>]
The qualifier can be even or odd, and the page rotation can be north, south, east, west, left, right, or down.
Each option sets the page rotation as follows (in degrees): north: 0, east: 90, south: 180, west: 270, left: -90, right: +90, down: +180. left, right, and down make relative adjustments to a page’s rotation.
The given order of the pages doesn’t change the page order in the output.
generate_fdf
Reads a single input PDF file and generates an FDF file suitable for fill_form out of it to the given output filename or (if no output is given) to stdout. Does not create a new PDF.
fill_form <FDF data filename | XFDF data filename | - | PROMPT>
Fills the single input PDF’s form fields with the data from an FDF file, XFDF file or stdin. Enter the data filename after fill_form, or use - to pass the data via stdin, like so:
pdftk form.pdf fill_form data.fdf output form.filled.pdf
If the input FDF file includes Rich Text formatted data in addition to plain text, then the Rich Text data is packed into the form fields as well as the plain text. Pdftk also sets a flag that cues Reader/Acrobat to generate new field appearances based on the Rich Text data. So when the user opens the PDF, the viewer will create the Rich Text appearance on the spot. If the user’s PDF viewer does not support Rich Text, then the user will see the plain text data instead. If you flatten this form before Acrobat has a chance to create (and save) new field appearances, then the plain text field data is what you’ll see.
Also see the flatten and need_appearances options.
background <background PDF filename | - | PROMPT>
Applies a PDF watermark to the background of a single input PDF. Pass the background PDF’s filename after background like so:
pdftk in.pdf background back.pdf output out.pdf
Pdftk uses only the first page from the background PDF and applies it to every page of the input PDF. This page is scaled and rotated as needed to fit the input page. You can use - to pass a background PDF into pdftk via stdin.
If the input PDF does not have a transparent background (such as a PDF created from page scans) then the resulting background won’t be visible -- use the stamp operation instead.
multibackground <background PDF filename | - | PROMPT>
Same as the background operation, but applies each page of the background PDF to the corresponding page of the input PDF. If the input PDF has more pages than the stamp PDF, then the final stamp page is repeated across these remaining pages in the input PDF.
stamp <stamp PDF filename | - | PROMPT>
This behaves just like the background operation except it overlays the stamp PDF page on top of the input PDF document’s pages. This works best if the stamp PDF page has a transparent background.
multistamp <stamp PDF filename | - | PROMPT>
Same as the stamp operation, but applies each page of the background PDF to the corresponding page of the input PDF. If the input PDF has more pages than the stamp PDF, then the final stamp page is repeated across these remaining pages in the input PDF.
dump_data
Reads a single input PDF file and reports its metadata, bookmarks (a/k/a outlines), page metrics (media, rotation and labels) and other data to the given output filename or (if no output is given) to stdout. Non-ASCII characters are encoded as XML numerical entities. Does not create a new PDF.
dump_data_utf8
Same as dump_data excepct that the output is encoded as UTF-8.
dump_data_fields
Reads a single input PDF file and reports form field statistics to the given output filename or (if no output is given) to stdout. Non-ASCII characters are encoded as XML numerical entities. Does not create a new PDF.
dump_data_fields_utf8
Same as dump_data_fields excepct that the output is encoded as UTF-8.
dump_data_annots
This operation currently reports only link annotations. Reads a single input PDF file and reports annotation information to the given output filename or (if no output is given) to stdout. Non-ASCII characters are encoded as XML numerical entities. Does not create a new PDF.
update_info <info data filename | - | PROMPT>
Changes the bookmarks and metadata in a single PDF’s Info dictionary to match the input data file. The input data file uses the same syntax as the output from dump_data. Non-ASCII characters should be encoded as XML numerical entities. This does not change the metadata stored in the PDF’s XMP stream, if it has one. For example:
pdftk in.pdf update_info in.info output out.pdf
update_info_utf8 <info data filename | - | PROMPT>
Same as update_info except that the input is encoded as UTF-8.
attach_files <attachment
filenames | PROMPT> [to_page <page number |
PROMPT>]
Packs arbitrary files into a PDF using PDF’s file attachment features. More than one attachment may be listed after attach_files. Attachments are added at the document level unless the optional to_page option is given, in which case the files are attached to the given page number (the first page is 1, the final page is end). For example:
pdftk in.pdf attach_files table1.html table2.html to_page 6 output out.pdf
unpack_files
Copies all of the attachments from the input PDF into the current folder or to an output directory given after output. For example:
pdftk report.pdf unpack_files output ~/atts/
or, interactively:
pdftk report.pdf unpack_files output PROMPT
[output <output filename | - | PROMPT>]
The output PDF filename may not be set to the name of an input filename. Use - to output to stdout. When using the dump_data operation, use output to set the name of the output data file. When using the unpack_files operation, use output to set the name of an output directory. When using the burst operation, you can use output to control the resulting PDF page filenames (described above).
[encrypt_40bit | encrypt_128bit]
If an output PDF user or owner password is given, output PDF encryption strength defaults to 128 bits. This can be overridden by specifying encrypt_40bit.
[allow <permissions>]
Permissions are applied to the output PDF only if an encryption strength is specified or an owner or user password is given. If permissions are not specified, they default to ’none,’ which means all of the following features are disabled.
The
permissions section may include one or more of the
following features:
Printing
Top Quality Printing
DegradedPrinting
Lower Quality Printing
ModifyContents
Also allows Assembly
Assembly
CopyContents
Also allows ScreenReaders
ScreenReaders
ModifyAnnotations
Also allows FillIn
|
FillIn |
AllFeatures
Allows the user to perform all of the above, and top quality printing.
[owner_pw <owner password
| PROMPT>]
[user_pw <user password | PROMPT>]
If an encryption strength is given but no passwords are supplied, then the owner and user passwords remain empty, which means that the resulting PDF may be opened and its security parameters altered by anybody.
[compress | uncompress]
These are only useful when you want to edit PDF code in a text editor like vim or emacs. Remove PDF page stream compression by applying the uncompress filter. Use the compress filter to restore compression.
[flatten]
Use this option to merge an input PDF’s interactive form fields (and their data) with the PDF’s pages. Only one input PDF may be given. Sometimes used with the fill_form operation.
[need_appearances]
Sets a flag that cues Reader/Acrobat to generate new field appearances based on the form field values. Use this when filling a form with non-ASCII text to ensure the best presentation in Adobe Reader or Acrobat. It won’t work when combined with the flatten option.
[keep_first_id | keep_final_id]
When combining pages from multiple PDFs, use one of these options to copy the document ID from either the first or final input document into the new output PDF. Otherwise pdftk creates a new document ID for the output PDF. When no operation is given, pdftk always uses the ID from the (single) input PDF.
[drop_xfa]
If your input PDF is a form created using Acrobat 7 or Adobe Designer, then it probably has XFA data. Filling such a form using pdftk yields a PDF with data that fails to display in Acrobat 7 (and 6?). The workaround solution is to remove the form’s XFA data, either before you fill the form using pdftk or at the time you fill the form. Using this option causes pdftk to omit the XFA data from the output PDF form.
This option is only useful when running pdftk on a single input PDF. When assembling a PDF from multiple inputs using pdftk, any XFA data in the input is automatically omitted.
[verbose]
By default, pdftk runs quietly. Append verbose to the end and it will speak up.
[dont_ask | do_ask]
Depending on the compile-time settings (see ASK_ABOUT_WARNINGS), pdftk might prompt you for further input when it encounters a problem, such as a bad password. Override this default behavior by adding dont_ask (so pdftk won’t ask you what to do) or do_ask (so pdftk will ask you what to do).
When running in dont_ask mode, pdftk will over-write files with its output without notice.
Collate scanned pages
pdftk A=even.pdf B=odd.pdf
shuffle A B output collated.pdf
or if odd.pdf is in reverse order:
pdftk A=even.pdf B=odd.pdf shuffle A Bend-1 output
collated.pdf
Decrypt a PDF
pdftk secured.pdf input_pw foopass output unsecured.pdf
Encrypt a PDF using 128-bit
strength (the default), withhold all
permissions (the default)
pdftk 1.pdf output 1.128.pdf owner_pw foopass
Same as above, except
password ’baz’ must also be used to open output
PDF
pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz
Same as above, except printing is allowed (once the PDF is open)
pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz allow printing
Join in1.pdf and in2.pdf into a new PDF, out1.pdf
pdftk in1.pdf in2.pdf cat
output out1.pdf
or (using handles):
pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf
or (using wildcards):
pdftk *.pdf cat output combined.pdf
Remove page 13 from in1.pdf to create out1.pdf
pdftk in.pdf cat 1-12 14-end
output out1.pdf
or:
pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf
Apply 40-bit encryption to
output, revoking all permissions (the
default). Set the owner PW to ’foopass’.
pdftk 1.pdf 2.pdf cat output 3.pdf encrypt_40bit owner_pw foopass
Join two files, one of which
requires the password ’foopass’. The
output is not encrypted.
pdftk A=secured.pdf 2.pdf input_pw A=foopass cat output 3.pdf
Uncompress PDF page streams
for editing the PDF in a text editor (e.g.,
vim, emacs)
pdftk doc.pdf output doc.unc.pdf uncompress
Repair a PDF’s corrupted XREF table and stream lengths, if possible
pdftk broken.pdf output fixed.pdf
Burst a single PDF document
into pages and dump its data to
doc_data.txt
pdftk in.pdf burst
Burst a single PDF document
into encrypted pages. Allow low-quality
printing
pdftk in.pdf burst owner_pw foopass allow DegradedPrinting
Write a report on PDF document metadata and bookmarks to report.txt
pdftk in.pdf dump_data output report.txt
Rotate the first PDF page to 90 degrees clockwise
pdftk in.pdf cat 1east 2-end output out.pdf
Rotate an entire PDF document to 180 degrees
pdftk in.pdf cat 1-endsouth output out.pdf
The pdftk home
page permalink is:
http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
The easy-to-remember shortcut is: www.pdftk.com
Sid Steward (sid.steward at pdflabs dot com) maintains pdftk. Please email him with questions or bug reports. Include pdftk in the subject line to ensure successful delivery. Thank you.


WITNESS LIST Transportation Committee April 13, 1999-3:00P HB 800 For: Buehler, Larry (City of Angleton) Cotten, Leslie (Navarro County Sheriff's Department) Kirkland, Pam (City of Richardson) Manison, Tom (Self and City of Friendswood) Martin, Bill (Dallas/Fort Worth International Airport Board National Purchasing Institute) Reid, Tom (City of Pearland and HGAC) Ryan, Mike (Self) Simpson, Frank (City of Texas City and HGAC) Steele, Jack (Houston-Galveston Area Council) Swan, Bobby (Self) Thompson, John (Polk County) Utter, Tom (City of Corpus Christi) Walker, Helen (Self and County Judges & Commissioners Association of Texas) Wise, Jimmy (Self and Triangle Chevrolet, Inc.) Against: Cone, Emmette (Self and Payton-Wright Ford Inc.) Fondren, Gene Fondren (Texas Automobile Dealers Association) Hagan, Andrew (Self and Cardenas Motors, Inc. & Valley Automobile Dealers Association) Woodall, Steve (Self and Warren Equipment Company) On: Bray, Brett (Texas Motor Vehicle Board) Registering, but not testifying: For: Chansley, James (Self) Forbes, Scott (Mayor and City Council of the City of Houston) Martinez, Mario (City of Brownsville) VanCantfort, Todd (Self and HGAC-CJC) On: Kent, Carol (Texas Motor Vehicle Board) Malloch, David (HGAC Cooperative Purchasing Program) Toppin, Valentino (Self and Houston-Galveston Area Council) Williamson, Ron (Self and Houston-Galveston Area Council) HB 1276 For: Merica, Joann (Self and Texas Young Lawyers Association) HB 1906 For: Pitman, Susan (The Chemical Connection) HB 2443 For: Leinberger, Clifford (Self) Schwarz, Paul (Self) HB 3662 For: Prewett, Ray (Self and Texas Citrus Mutual)


The square root of 2 can be written as an infinite continued fraction.
| 2 = 1 + |
1 |
|||
| 2 + |
1 |
|||
| 2 + |
1 |
|||
| 2 + |
1 |
|||
| 2 + ... |
The infinite continued fraction can be written, 2 = [1;(2)], (2) indicates that 2 repeats ad infinitum. In a similar way, 23 = [4;(1,3,1,8)].
It turns out that the sequence of partial values of continued fractions for square roots provide the best rational approximations. Let us consider the convergents for 2.
| 1 + |
1 |
= 3/2 |
|
2 |
| 1 + |
1 |
= 7/5 | |
| 2 + |
1 |
||
|
2 |
| 1 + |
1 |
= 17/12 | ||
| 2 + |
1 |
|||
| 2 + |
1 |
|||
|
2 |
| 1 + |
1 |
= 41/29 | |||
| 2 + |
1 |
||||
| 2 + |
1 |
||||
| 2 + |
1 |
||||
|
2 |
Hence the sequence of the first ten convergents for 2 are:
What is most surprising is that the important mathematical constant,
e = [2; 1,2,1, 1,4,1, 1,6,1 , ... , 1,2k,1, ...].
The first ten terms in the sequence of convergents for e are:
The sum of digits in the numerator of the 10th convergent is 1+4+5+7=17.
Find the sum of digits in the numerator of the 100th convergent of the continued fraction for e.


2/5/2018 by Ashley Lyle
Kingston, Jamaica-born and Toronto-raised super producer Boi-1da has been dropping hits for the past decade.
From breaking out with Drake's 2009 smash "Best I Ever Had" (peaking at No. 2 on Billboard Hot 100), Boi-1da has worked with the likes of Kendrick Lamar ("The Blacker the Berry"), Kanye West ("Real Friends"), Nicki Minaj ("Freedom"), and more. He's also become a frequent collaborator of Drake's, having worked with Young Aubrey on several of his singles, including "Over," "Miss Me," "Headlines," the DJ Khaled-led "No New Friends," "0 to 100/The Catch Up," and "Summer Sixteen."
The behind-the-scenes heavyweight currently boasts an impressive three records in the top 10 of the Hot 100 chart this week (dated Feb. 3) with Drake's "God's Plan" debuting at No. 1 and his "Diplomatic Immunity" debuting at No. 7, and G-Eazy's (feat. A$AP Rocky and Cardi B) "No Limit" sitting at No. 10 (previously peaking at No. 4). Hardly a rookie to the top 10, the Toronto producer had already twice reached the apex of the Hot 100, with Rihanna's "Work" and Eminem's "Not Afraid," with the latter also debuting at No. 1, as well.
Despite his astounding and consistent run, the producer has surprisingly kept a relatively low profile, doing few interviews, and focusing on making more music and building his catalog. Billboard hopped on the phone recently with Boi-1da to discuss his recent success, his family (who keeps his business on point), and what keeps him grounded.
How did "God's Plan" come about?
It was a half-finished record that Drake had. He came to me and needed me to put a bounce to it to rock a certain way. So I ended up adding some drums to the record. It came out well. I vibed with it and did what needed to be done. It came out as an amazing record.
When you heard the finished product, did you know it was going to be a smash?
Oh yeah, instantly. With Drake, he never misses. Soon as I heard it, I knew it was going to be great.
Is the story of how "God's Plan" came together with similar to "Diplomatic Immunity?"
"Diplomatic Immunity" actually happened the same night. I was really inspired and ended up playing it for him. And when Drake hears something he likes, he gets on it and it's actually what he did.
How did G-Eazy's "No Limit" come about?
I was in the studio with G-Eazy, and it's funny because it was the first beat I played for him. He flipped out when he heard it and immediately started writing to it. Randomly, A$AP Rocky was in the same studio, and just happened to walk into the room. He heard the beat as well and was like, "Yo. I really like this beat. Is it cool if I try something on it?"
And after, he just hopped on the beat. What he did was almost a freestyle. I didn't see him write anything down. He just went in the booth and started going crazy. And then, they just took that. G added the second hook and verses, then the song was done. Then, he got Cardi B to jump on it. It was cool because we got to sit and vibe and come up with cool ideas. We figured it out.


--- title: System Upgrades subject: RFQ System Upgrade active: true ---
DgS can upgrade your existing Micro-g Lacoste SeaSys, AirSeaII, and ZLS systems to our new range of Advanced Technology
Airborne or Marine systems.
The upgrade can be customized to your operational needs and budget (see options below).
A full upgrade includes installation of force-feedback measurement, and magnetic damping systems, as well as an
all new platform, frame, and data-collection system.


ABOUT ME
I started to play the mod in 2016, and loved it instantly. Although I play less often now, I am still around to see how the mod evolve. I have made other contributions to the mod such as the french translation and custom fonts + guides.
Outside the game, I did other translation jobs for another video-game (dungeon keeper FX, not professionally) but I'd like to make more game available in french.
ABOUT THIS GUIDE
This website/documentation is provided 'As-is' and may contain some errors due to unforeseen changes in MXL's game-play, patches updates or personal errors.
For any complains or suggestions please contact Wasps#7270 in MXL's discord server, Wasp in the forum or click this link to open an issue on github
CREDITS
Credit goes where credit's due:
- The dev team
- The wikia maintainers
- The docs maintainers
- Guide makers I linked who made such great mini-guides
- Discord user that helped add and correct some useful stuff


SkyID
Blog
Profile
Connected apps
QR-Code login
Users
Documentation
Learn
Implement
My profile
Logout
Loading...


Objective
Developing mine locomotive collision warning system to achieve: 1. real-time obstacle detection; 2. complex road condition detection; and 3. mine locomotive localization.
Abstract
This project develops a collision warning system for underground mine locomotives. The developed system utilizes a 2D LiDAR to achieve the obstacle detection with the collection angle of 270 degrees and detection range beyond 60 meters. The RFID technology is employed for two purposes: complex road condition detection, such as curved road and mine locomotive localization. The pre-deployed RFID tags include the position, traveling direction and track number information. The communication between the locomotives is achieved with LoRa wireless data communication technology. The data processing and human machine interaction is achieved with the industrial grade tablet.
Experiments
Figure 1. Human machine interface
Figure 2. Experimental environment
Figure 3. Obstacle detection results: the blue dot is the point cloud from the LiDAR and the red box is the predefined warning area.


Cradle Will Rock 4 Stars (Out of 4) Reviewed by Mac VerStandig<EMAIL_ADDRESS>http://www.moviereviews.org February 7, 2000
--- A copy of this review can be found at http://www.moviereviews.org/cradle_will_rock.htm ---
There are some simple rules to making a feature film. They include: 1) Try to avoid venturing over the two-hour mark. 2) Don't rip the plot out of a history textbook. 3) Use a lead actor.
Duh!
Cradle Will Rock violates all three of those rules. The work is over two hours long, rips its plot out of the Great Depression chapter in textbooks and uses nearly 15 supporting actors in lieu of a lead role.
The odds of a movie with the aforementioned infractions of common practice being decent are about the same as a little Italian man who speaks fractured English beating out Tom Hanks for Best Actor. Well, Benigni not only won the honor but literally walked on Steven Spielberg in doing so. Cradle Will Rock not only gets away with the no-nos, but achieves absolute brilliance in the process.
It is the 1930's and the Great Depression has divided American into the minority wealthy and the majority poor. In an attempt to provide cheap entertainment for the masses and save an institution known as Broadway, the Federal Theatre Project (FTP) is born. The mission is to provide talented, trained and experienced actors and crew members with jobs.
Marc Blizenstein (Hank Azaria), with the aid of sleepless hallucinations, pens a show titled Cradle Will Rock. Orson Welles (Angus Macfadyen) directs the piece after Hallie Flanagan (Cherry Jones), the director of FTP, decides to produce it. Cast members include a poor but pride-filled actor (John Torturro) and a homeless street singer who catches a break (Emily Watson).
There is a problem with Cradle Will Rock, however. It is pro-union. Lest we forget that Martin Dies is leading a pre-McCarthy committee investigating possible incidents of communism and FTP is already under examination in the most notorious witch-hunt in American history.
The film's suporting character overdose is actually countered by the history book issue; since the actors are wonderful playing people we are familiar with, much of the movie works itself out. Azaria's grasp on Blitzstein is marvelous, John Cusack's take of Nelson Rockefeller is extremely noteworthy, Ruben Blades' Diego Rivera is fabulous and, most impressively, Bill Murray plays Tommy Crickshaw in a convincing and oftentimes chilling manner.
Another interesting actor in the cast is Philip Baker Hall. The veteran actor seems to have struck gold this year, appearing not only in this fine film but The Talented Mr. Ripley, The Insider and Magnolia as well. It is conceivable that he could appear in three, if not four, of the 1999 Best Picture nominates films.
If all this sounds semi-chaotic, that's probably because it is. Keeping track of all the film's characters, their issues and the politics is indeed challenging. However, what is being shown in the movie is a time of equally dense chaos and uncertainty. Director Tim Robbins should be credited, not blamed, for properly portraying the realistic setting of his subject matter.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


How I learned to stop worrying and love failure.
(You probably already know this.)
TDD stands for test-driven development.
Write the tests before the code.
Let test feedback drive development.
Embrace failure.
Tight feedback loops.
Small, well defined steps.
We test, even if it's just manual testing.
Manual testing is expensive, tedious, and error-prone.
Automated testing minimizes those problems.
TDD is an effective way to create automated tests.
Defects are usually caught near creation time,
when they're the least painful and expensive to fix.
| Requirements | Architecture | Construction | System Test | Release | |
| Requirements | 1 | 3 | 5-10 | 10 | 10-100 |
| Architecture | — | 1 | 10 | 15 | 25-100 |
| Construction | — | — | 1 | 10 | 10-25 |
“TDD teams produced code that was 60 to 90 percent
better in terms of defect density than non-TDD teams.”
—Microsoft Research, 2008
If we rarely write code except to make a failing test pass,
then most of the code will be covered by tests.
Tests are the first consumer of code.
If tests are easy to write, then code is usually easier to use.
Tests enable safe refactoring both now and later.
It’s hard to have agility without clean code.
It’s hard to have clean code without refactoring.
It’s hard to safely refactor without automated tests.
“Don't touch anything that doesn't have [test] coverage.
Otherwise, you're not refactoring; you're just changing sh*t.”
—Hamlet D'Arcy
Examples of code in passing tests must be correct.
Well written tests help us readily understand the code.
By doing TDD, most code will be documented this way.
Failing tests tell us what to work on.
Focus equals speed.
Passing tests tell us when we’re done.
Minimizes slapdash code.
Minimizes gold-plated code.
Debugging is very unpredictable.
Fewer defects means less debugging.
TDD significantly reduces the number of defects.
Test especially when it’s hard.
Difficulty testing is very useful design feedback.
The following applies to object-oriented languages.
(Especially dynamically typed ones.)
Some of it may apply to other languages.
Write a failing test, make it pass, clean up the mess.
Regularly check for architectural problems.
Build a “walking skeleton” first.
Least amount of functionality that’s automatically
buildable, deployable, and testable end-to-end.
Architecture, infrastructure, and features should evolve together.
“For each desired change, make the change easy
(warning: this may be hard), then make the easy change.”
—Kent Beck
Helps prevent speculative code (YAGNI).
The user’s needs should come first.
(“User” could mean “developer.”)
Clearly express desired system behavior.
Ensure test failure messages are helpful.
Covers a single, small “feature.”
Clearly express desired {component, interaction} behavior.
Ensure test failure messages are helpful.
Keep it simple.
Don’t write more than is enough to pass.
Make the code clean.
Important, but often skipped!
“Well-designed components are easy to replace. Eventually,
they will be replaced by ones that are not so easy to replace.”
—Sustrik's law
Build more {unit, integration} tests until the code
is correct, and the acceptance test passes.
We’re running tests constantly.
The feedback loop must be fast.
Don’t sacrifice clarity.
Like a science experiment.
Control variables and external contamination.
Results should be reproducible.
Use test doubles (mocks, stubs, spies, etc.) to:
improve isolation, increase speed (avoid I/O),
improve design, and discover collaborators.
Try using only one assertion per test.
Makes failures much easier to troubleshoot.
Progress, not perfection.
Don't know how to do something?
Start with one line of test code.
Heck, start with just a single comment.
REPL-driven development.
Property or generative testing.
Mutation and fuzz testing.
Transformation priority premise (Uncle Bob).


03.Write a function that makes a deep copy of an object
The function should work for both primitive and reference types
Input element to be deep copied:
Print


!!!!!Happy Birthday Carmela!!!!!
Your challenge is to solve the video puzzle before the video ends!
Note: Clicking on two video pieces will switch their locations
Hint: The url for the video is https://www.youtube.com/watch?v=D-l0J15knyE
Happy Birthday (From Slavey)


-
$1420
favorite this post
2 bed, pool, 24hr gym, maintenance, dog park, H&HW incld & more!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
We accept dogs up to 75lbs! 1 bed, TONS of closets, H&HW incld
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
2 bedroom, updated w/ granite & fresh carpet, pool, 24/7 gym, pets ok!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
1 bed, 5 closets! Updated kitchen, private balcony, H&HW incld
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
LARGE 1 bedroom apt, quiet area, MASSIVE walk-in, H&HW incld
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1000 off move-in!! 2 bed massive walk-ins large kitchen. UPDATED!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
APPLY TODAY! 1 Bed 1 Bath Pet Friendly, Dogs Up To 75 lbs!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
2 Bed 1 Bath With Updated Appliances, Pet Friendly and Quiet Area!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
2 Bed 1 Bath With Spacious Kitchen and Plenty of Cabinet Space!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
SPACIOUS 2 Bed 1 Bath With Granite Countertops and 2 Walk-in Closets!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
HUGE 2 Bed 1 Bath With Breakfast Bar and Updated Appliances!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
AVAILABLE NOW JANUARY FREE!! 2 Bed 1 Bath With 2 Walk in Closets!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
AVAILABLE SOON! 1 Bed 1 Bath HUGE Walk-in Closet and Spacious Kitchen!
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
AVAILABLE NOW 1 Bed 1 Bath HUGE Kitchen, Private Balcony! Pet Friendly
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
APPLY TODAY! 2 Bed 1 Bath JANUARY RENT FREE! Private Balcony!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
1 Bed 1 Bath Available February! HUGE Galley Kitchen, Private Balcony
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1485
favorite this post
APPLY TODAY! 2 Bed 1 Bath With All Black Appliances!!
$1485
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
AVAILABLE NOW! HUGE 1 Bed 1 Bath With Balcony, Laundry On-site
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
AVAILABLE FEBRUARY! 1 Bed 1 Bath With On-site Pool and Grill Pads!
$1230
2br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
HUGE 2 Bed 1 Bath With Private Balcony and Shared Grill Pad
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
JANUARY FREE! 2 Bed 1 Bath On-site Dog Park, Pet Friendly!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
HUGE 2 Bed 1 Bath with 2 Walk-in Closets! Snow Removal, Free Parking!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
1 Bed 1 Bath Available NOW! On-site Laundry and Dog Park!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
1 Bed 1 Bath Available January!! HUGE Walk-in Closet and Dog Park!
$1250
2br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1485
favorite this post
HUGE 2 Bed 1 Bath With Plank Flooring! All Black Appliances!
$1485
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
2 Bed 1 Bath AVAILABLE NOW! HUGE Walk-in Closet!! Pet friendly!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
HUGE 2 Bed 1 Bath JANUARY FREE! Pool and 24 Hour Gym!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
AVAILABLE NOW! 2 Bed 1 Bath with HUGE Walk-in Closet!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
2 Bed 1 Bath JANUARY FREE! 24 Hour Maintenance!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
HUGE 2 Bed 1 Bath with walk in closets! 24 Hour Maintenance
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
JANUARY FREE! 2 bed, granite countertops, pvt balcony, H&HW incld
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1485
favorite this post
JANUARY FREE! 2 bed, updated w/plank & granite, amenities & much more!
$1485
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
FREE SECURITY DEPOSIT! 1 bed, private balcony, 24/7 maintenance & more
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
JANUARY FREE!! 2 bed, amenities, pets ok, 24/7 gym & maintenance!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1000 OFF MOVE-IN! 2 bed, 2 walk-ins, 24/7 gym, 24/7 maintenance!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1485
favorite this post
APPLY NOW! JANUARY FREE! 2 Bed 1 Bath Plank Flooring, Private Patio!
$1485
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
JANUARY FREE! Private Balcony! Pet Friendly With On-site Dog Park!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
JANUARY FREE! 2 Bed 1 Bath With 24 Hour Gym and Business Center!!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
JANUARY FREE! 2 Bed 1 Bath in Quiet Area! With Pool and Grill Pads!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
AVAILABLE! 1 Bed 1 Bath with Walk-In Closet! Most Utilities Included
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
APPLY TODAY! JANUARY FREE! 24 Hour Maintenance and On-site Laundry!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
January Rent Free!! 2 Bed 1 Bath with Huge walk in closet and Balcony!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
January Rent FREE! 2 Bed 1 Bath With HUGE Kitchen! Updated Appliances!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
2 Bed 1 Bath Private Patio AVAILABLE NOW! Quiet Area! Pet Friendly!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1000 OFF! 2 Bed 1 Bath With 2 Walk-in Closets! On-site Maintenance!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
Available February! 1 Bed 1 Bath Walk-In Closet! Private Balcony!
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
1 Bed 1 Bath With HUGE Walk in closet and Galley Style Kitchen!
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
HUGE 1 Bed 1 Bath! With On-site Laundry and Off-street Parking!!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
AVAILABLE FEBRUARY! 1 Bed 1 Bath! On-site Pool, Basketball Court!
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
APPLY TODAY! 2 Bed 1 Bath With Walk in Closet! Pet Friendly!!!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
AVAILABLE NOW! HUGE 1 Bed 1 Bath With Large Kitchen, Private Balcony!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
AVAILABLE NOW! 2 Bed 1 Bath 24 Hour Maintenance and 24 Hour Gym!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1000 OFF 2 Bed 1 Bath Immediate Move in!! 2 Walk in Closets!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
2 bed, 2 walk-in closets, large open concept,
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
2 bed, H&HW incld, pvt balcony, pets ok, pool, 24hr gym & more
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
1 bed, H&HW incld, pool, 24hr gym, private balcony, maintenance & more
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
1 bedroom, private balcony, updated, laundry in building, amenities
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
1 bed, H&HW incld, 24hr gym, 24hr maintenance, amenities & more!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
Available NOW! 1 Bed 1 Bath Off street Parking, Pool, 24 Hour Gym!!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
Available January! 1 Bed 1 Bath With Walk-in Closet! Galley Kitchen
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1000 Off! 2 Bed 1 Bath! Pet Friendly, Dogs Up To 75 lbs and Cats!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
AVAILABLE NOW! 2 Bed 1 Bath $1000 OFF January!! Incl. Snow Removal
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
AVAILABLE NOW! Spacious 1 Bed With Heat Hot Water and Cooking Gas!!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
2 Bed 1 Bath With 24 Hour Gym and Seasonal Pool!!!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
HUGE 2 Bed 1 Bath! Off Street Parking and Laundry Onsite!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1,000 OFF JAN RENT! 2 Bed 1 Bath with 2 Walk-in Closets!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
HUGE 2 Bed 1 Bath With 24 Hour Maintenance and Snow Removal!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
RENT NOW! Spacious 1 Bed with Closet Space and Private Balcony!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
AVAILABLE NOW! 2 Bed 1 Bath With Two Walk In Closets and HUGE Balcony!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
HUGE 2 Bed 1 Bath Available!! Most Utilities Included! $1,000 OFF JAN!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
2 bed, 2 walk-in, pvt balcony, H&HW incld, pool, 24hr gym, pets ok
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
1 bed available now! Private balcony, H&HW incld, granite countertops
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
New Year New Apt! 2 bed, H&HW incld, amenities & 24/7 maintenance
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
AVAILABLE FEBRUARY! 1 Bed 1 Bath With HUGE Walk In Close!
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
AVAILABLE NOW! 2 Bed 1 Bath with Carpet Flooring, 24 Hour Maintenance!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
Spacious 1 Bed 1 Bath With Granite Counter-tops And Updated Appliances
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
AVAILABLE NOW! Spacious 1 Bed 1 Bath With On-site Laundry
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
2 Bed 1 Bath AVAILABLE NOW! $1000 OFF First Months Rent!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1000 OFF! HUGE 2 Bed 1 Bath With Heat, and Cooking Gas Included!!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
HUGE 2 Bed 1 Bath APPLY TODAY! 24 Hour Maintenance Available!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
Available JANUARY! 1 Bed 1 Bath with Private Balcony in Quiet Area!
$1230
2br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
AVAILABLE NOW Huge 1 Bed 1 Bath with Granite Counter-tops
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
AVAILABLE NOW $1000 Off 2 Bed 1 Bath with 2 Walk in Closets
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
SPACIOUS 2 Bed 1 Bath with Grill Pads, Dog Park, and Basketball Court!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
APPLY TODAY! 2 Bed 1 Bath Heat, Hot Water, Cooking Gas INCLUDED!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
AVAILABLE NOW! 1 Bed 1 Bath with On-site Pool and 24 Hour Gym!!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
Large 1 Bed 1 Bath with HUGE Walk-in Closet, Onsite 24 Gym!
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1485
favorite this post
Now Available! 2 Bed 1 Bath With Plank Flooring, Granite Countertops!!
$1485
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
HUGE 1 Bed 1 Bath Available Now! Plenty of Closet Space, Private Deck
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1000 OFF Dog Friendly Community Up To 75lbs!! HUGE Dog Park!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
$1000 OFF, 2 Bed 1 Bath with Granite Countertops and Private Deck!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
APPLY TODAY! 1 Bed 1 Bath Available February! Pet Friendly Community!
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
All Black Appliances and New Carpet in HUGE 2 Bed 1 Bath
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
AVAILABLE NOW! 2 Bed 1 Bath With A/C In Unit and On-Site Pool!!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
1 Bed 1 Bath With Private Balcony, Plenty of Off Street Parking!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
HUGE 2 Bed 1 Bath With On-site 24 Hour Gym For Residents!!!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1485
favorite this post
1st floor, 2 bed, plank flooring, updated kitchen, & private patio!!
$1485
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
1 bed, private balcony, pool, 24hr gym, 24/7 maintenance, H&HW incld
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
Pet friendly 2 bed, 2 walk-ins, dog park, amenities, pool, gym, & more
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
New Year New Apartment! 1 bed, massive walk-in, open updated kitchen
$1230
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
Large dogs now accepted! 2 bed, walk-in closets, pool, 24hr gym
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
Community Living at its finest! 1 bed, private balcony, H&HW incld
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
Large 2 bed, w/walk-in closets, private balcony, heat & HW incld
$1430
2br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
1 bed, large walk-in, some utilities included, gym,pool, private patio
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
1 bed, 24hr gym, 24hr maintenance, H&HW incld, and pool
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
Weekend Tours! 1 bed, H&HW incld, gym, dog park, & more!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
AVAILABLE ASAP 2 Bed 1 Bath with On-site 24 Hour Gym
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
1 Bed 1 Bath with Private Deck! On-Site Laundry and Plenty of Parking!
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
2 Bed 1 Bath With Access to Cinema Room, Grills, and Basketball Court!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
APPLY TODAY! 2 Bed 1 Bath with HUGE On-Site Pool and Beach Volleyball!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
Most Utilities Included 2 Bed 1 Bath With 24 Hour Gym!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
Large 2 Bed 1 Bath with TWO Walk in closets with 24 Hour Maintenance!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
APPLY NOW! 2 Bed 1 Bath with Private Balcony/Patio in Quiet area!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
Pet Friendly Community APPLY TODAY! HUGE On-site Dog Park!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
2 bed, private balcony, quiet residential area, pool, 24hr gym & more!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
2 bed, spacious kitchen w/breakfast bar, 2 large walk-ins, pvt balcony
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
Large kitchen, spacious 1 bed, 24hr gym, 24hr maintenance & more!
$1250
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
1 bed, MASSIVE walk-in closet, private balcony, quiet area, pets ok
$1230
1br -
740ft2 -
pic
hide this posting
restore
restore this posting
-
$1220
favorite this post
Spacious 1 bed, pet friendly, amenities, 24hr maintenance, H&HW incld
$1220
1br -
710ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! Updated Kitchen with Granite Countertops and Dishwasher
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
Available Now! 2 Bed 1 Bath in Quiet Community, Close to Beach
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER FREE! Walk in Closets in 2 Bedroom 1 Bath
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! Pet Friendly Community With HUGE On-site Dog Park!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
Available Now! 2 Bed 1 Bath Plank flooring and
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
APPLY NOW! 2 Bed 1 Bath with 24 Maintenance, Included Snow Removal
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER FREE! Heat Hot Water and Cooking Gas included! Apply NOW
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! AVAILABLE ASAP! 2 BED 1 BATH IN QUIET NEIGHBORHOOD!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER RENT FREE! Spacious Kitchen, Updated Appliances, 2 Bed 1 Bath
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
December Free! Quiet community, 24 Hour Maintenance, And Laundry
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! 2 BED 1 BATH WITH MOST UTILITIES INCLUDED APPLY NOW!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! ASAP MOVE IN! In Quiet Area w/ Most Utilities Includede
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER FREE! Spacious 2 Bed 1 Bath Large Kitchen and Huge Closets!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1250
favorite this post
DECEMBER FREE! On-site Gym, Pool, and Laundry!!!! APPLY TODAY!
$1250
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! UPDATE APPLIANCES! CARPET FLOORING! WALK IN CLOSETS!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
HUGE 2 Bed 1 Bath With Onsite Pool and Cinema room!!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER RENT FREE! HUGE Kitchen with PLENTY of Cabinet Space!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER RENT FREE! APPLY TODAY! PET FRIENDLY WITH 24 HOUR MAINTENANCE
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! 2 Bed 1 Bath quiet community with 24 hour Gym!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
December FREE!!! Open concept eat-in & updated kitchen, 2 bed, pets ok
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
FREE DECEMBER RENT! 2 Bed 1 Bath Luxury Amenities: Pool, Gym, and MORE
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
APPLY NOW! All Black Appliances in 2 Bed 1 Bath with Private Balcony
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER FREE! On-site Laundry and PLENTY of Parking! 2 Bed 1 Bath!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
Available Now!! DECEMBER FREE! HUGE 2 Bed 1 Bath with Walk in Closets!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
On-site 24 Hour Maintenance, off-street Parking in Quiet Area!!!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
APPLY TODAY GET DECEMBER FREE! On-site Pool in the summer!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! On-site Dog Park, Gym, Cinema room, and MORE!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! Spacious 2 Bed 1 Bath in Pet Friendly Community!!!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
APPLY TODAY! Updated All Black Kitchen Appliances and New Carpet!!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1459
favorite this post
DECEMBER FREE! Spacious Updated Kitchen With Granite Counter-tops!!!
$1459
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER FREE! 2 Bed 1 Bath with 2 HUGE Walk in closets!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE!! 2 Bed 1 Bath with Private Balcony/Patio!!!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER RENT FREE! HUGE 2 Bed 1 Bath in Pet Friendly Community
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
APPLY TODAY! 2 Bed 1 Bath With Granite Counter-Tops!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER FREE! On-site Pool and Cinema Room!! APPLY NOW!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
DECEMBER RENT FREE!! Visit Our Pet Friendly Community TODAY!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE!! SPACIOUS 2 Bed 1 Bath With On-site Fitness Room!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER FREE! 2 Bed 1 Bath with HUGE Walk-in Closets! APPLY TODAY!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1420
favorite this post
APPLY TODAY! 2 Bed 1 Bath in Pet Friendly Community With Dog Park!!
$1420
2br -
886ft2 -
pic
hide this posting
restore
restore this posting
-
$1430
favorite this post
DECEMBER RENT FREE! On-site Pool and 24 Hour Gym!!
$1430
2br -
932ft2 -
pic
hide this posting
restore
restore this posting
-
$1450
favorite this post
GET DECEMBER RENT FREE! Most Utilities Included With a Private Deck!!
$1450
2br -
932ft2 -
pic
hide this posting
restore
restore this posting


Library Management - Manage Books
Name
Summary
ISBN
Total copies
Copies on loan
Loaned by
Delete this book
Return


the literature around us is now unmistakably a planetary system
~ Franco Moretti
Amy E. Groshek | University of Wisconsin - Madison | April 2016
A friend brought me the first volume… from the United States in the late seventies. The book made an enormous impression on me, and I remember wondering how it could affect, and change, the study of literature. But I found an answer only several years later.
~ Franco Moretti
2005
'all-inclusivenes' and chaos in modernist texts.
~ Franco Moretti
For me, it's more of a triangle: foreign form, local material—and local form. Simplifying somewhat: foreign plot; local characters; and then, local narrative voice: and it's precisely in this third dimension that these novels seem to be most unstable—most uneasy... the narrator is the pole of comment, of explanation, of evaluation, and when foreign 'formal patterns'... make characters behave in strange ways..., then of course comment becomes uneasy
~ Franco Moretti
Four continents, two hundred years, over twenty independent critical studies, and they all agreed: when a culture starts moving towards the modern novel, it’s always as a compromise between foreign form and local materials.
~ Franco Moretti
Writing about comparative social history, Marc Bloch once coined a lovely ‘slogan,’ as he himself called it: ‘years of analysis for a day of synthesis’; and if you read Braudel or Wallerstein you immediately see what Bloch had in mind. The text which is strictly Wallerstein’s, his ‘day of synthesis,’ occupies one third of a page, one fourth, maybe half; the rest are quotations (fourteen hundred, in the first volume of The Modern World-System). Years of analysis; other people’s analysis, which Wallerstein’s page synthesizes into a system.
~ Franco Moretti
International trade was not… a trade between equals. Some countries were stronger economically than others (the core) and were therefore able to trade on terms that allowed surplus-value to flow from the weaker countries (the periphery) to the core.
~ Immanuel Wallerstein
There are always limits.
~ Immanuel Wallerstein
The evolutionary mechanism capable of changing the genetic structure of a population most swiftly is natural selection
in biology the transmission of information can occur only from parent to child...
~ Alberto Piazza
the study, in the field of genetics, of cellular and physiological phenotypic trait variations that are caused by external or environmental factors that switch genes on and off and affect how cells read genes instead of being caused by changes in the DNA sequence.
~ https://en.wikipedia.org/wiki/Epigenetics
we examined the inheritance of parental traumatic exposure... Our findings provide a framework for addressing how environmental information may be inherited transgenerationally at behavioral, neuroanatomical and epigenetic levels.
~ Dias and Ressler
Amy E. Groshek
Department of English, UW - Madison
<EMAIL_ADDRESS>amygroshek.com


HTML5 Developer Conference
by Brandon Cole
This week, I was lucky to be able to attend the HTML5 Developer Conference in San Francisco. Here’s a few takeaways that I’d like to share!
Module Based Design
This was probably my favorite talk of the day. It focused on best practices for design of modern web applications and utilizing reusable components.
The full talk is titled Evolving Web Applications with Module Based Design Components and was given by Mike Kivikoski, a Designer and Developer at Cantina in Boston.
He started out with some examples of good module based design, like Netflix. Netflix has a standardized widget to display a list of TV shows or movies, and it is reused in multiple places across the site. The important thing to note is the consistency.
However, it is not enough to simply have a consistent UI. It should also be maintainable.
He gave an example of an airline site which he enjoyed using. The buttons and styles were consistent. However, he looked into the source code and noticed that different classes were being used for titles that had the same exact styling. This is bad! It means that if a change wants to be made (ex: change the title font size), this has to be changed in every CSS class used by titles. This violates the DRY principle (don’t repeat yourself!), and it’s not maintainable!
He ended with an example of an even worse site, where there wasn’t even consistency. Buttons looked different, forms had different styling, and so on. This is an obvious no-no.
But back to the good design. What should we do?
Good Design - Tips & Tricks
Mike gave a lot of tips & tricks in this talk to keep in mind while designing your CSS and website. I’ll pull out a few that I especially thought were useful.
1) Use CSS classes, not IDs
Classes are reusable, and this approach helps promote a component based design and dissuades styling for “one-off’s” (more on this later).
2) CSS classes should do one thing and do it well
Creating monolith classes that do everything you need in one shot may seem simple at first, but it’s not a good approach. Again, this will impede our desire to have reusable CSS classes.
As an example, consider a sandwich. It would be poor design to just create a sandwich style, as this isn’t very reusable.
Instead, we want smaller components that are responsible for one piece of the design. They should do one thing, and do it well!
Here’s a better approach:
If you think about it, this isn’t really anything brand-new for software design. Cohesive design is a practice across all software development. However, I think it can be overlooked when it comes to CSS design. I hadn’t really given this idea too much thought before Mike’s talk.
3) Don’t make one-off changes
When marketing comes with a new requirement, don’t create the CSS class .headline-one-with-top-margin-for-marketing
. Create components!
.headline-one
, .top-margin
, and .marketing
(if required) are the classes you should create instead.
This is really just another reiteration of following the DRY principle and will make for a maintainable design.
4) Use variables, and name variables appropriately
A good example is colors; don’t hardcode color values in your classes. And when assigning colors to a variable, take care to name the variable appropriately.
@gray
, @dark-gray
, @extra-dark-gray
, @super-extra-dark-gray
, and so on.. is unrealistic. Use a number scheme instead.
@gray-100
, @gray-200
, @gray-300
, …, @gray-900
, this is a much better approach (and follows the font-weight standard).
You could also do this for colors that you don’t want to explicitly name. Example: @primary-100
, @primary-200
, @primary-300
, and so on for your primary theme color.
5) CSS file organization
CSS files should be named according to component, not based on the page!
Bad example:
.
├── styles
| ├── homePage.css
| ├── aboutPage.css
| ├── contactPage.css
| ├── ...
Good example:
.
├── styles
| ├── alerts.css
| ├── buttons.css
| ├── forms.css
| ├── ...
This will help enforce that reusable component based design that we’ve been talking about. Organizing based on location makes it much harder to reuse that style in another part of the site.
6) Code Reviews
Mike finished off the talk with tips on how to be more successful as a team.
Code reviews are a must, even for styles. A few things this can help with:
- Check that variables are used (appropriately).
- Check syntax, and check that naming standards are used and code is consistent.
- Check that components are reusable.
7) Style Guides
Documentation is normally not the most enjoyed part of a developer’s life, but it is crucial!
In the case of module based design, it can clearly show the rest of your team the components that are available for use.
There are plenty of tools that will help generate these style guides for you:
- KSS
- Pattern Lab
- Fabricator - and here’s a demo of a style guide
He also mentions not to let this style guide die. Keep it up-to-date and let it evolve!
One final topic I want to discuss on this talk is testing. I had a concern while hearing this talk that by putting styles into reused classes, testing could become a pain. If you want to change the style of some text on the homepage, you go and change the style. But then what if that style is reused, and some other page breaks?
Apparently, I wasn’t the only one with that concern, as it was brought up during Q&A. Mike’s answer was two-fold. First, he admitted that of course some regression testing will have to be done to ensure that the change isn’t breaking other parts of the site. The other point he brought up is that the benefit of this module based design is that components “play well” together. Components should be compatible with other components (without breaking).
In other words, it shouldn’t be possible that changing a component’s style and testing it on the homepage would work, but would break on another part of the site. This all relates back to his point about avoiding one-off changes as well, as you can better prevent odd edge cases that happen only on certain pages.
So, take that with a grain of salt. A perfect implementation of module based design wouldn’t introduce this sort of bug, but things don’t always execute perfectly, do they? ;)
This was a very potent talk with a lot of content, but I hope I summarized out the core points on this one!
Localization
I actually had no idea what this talk would be about, based on it’s title: How Automation Can Open Up Your Product to a Billion More Users*. The asterisk ended up signifying:
* if you localize all the languages …
The full slide deck is available here: https://eleith.com/slides/automate-i18n/
Some of the core points I took out of this talk:
1) How to determine the user’s language
This can be difficult, and depends on the specific situation. In general, use a combination of strategies:
- User’s preference data (if the user is logged in).
- The
Accept-Language
header in the request (this is based on browser preferences). - IP-based (using a service like MaxMind).
Google was given as an example of a good experience. You can travel to Japan, the site would load in Japanese, but Google would offer a message saying “we think you might prefer to read this in English.”
2) How to broadcast the language support
This is important to help ensure that user is given appropriate content. It can also help search engines pick the right results.
Use the HTML standard (<html lang="en">
) or use subdomains:
- es.coursera.org
- zh.coursera.org
- pt.coursera.org
3) Translation concerns
There’s more to consider than simply translating words. For example, the English word “back” could be translated to the meaning “previous”, or to the part of the human body. Context is important.
Format can also change. For example, dates, times and numbers (like the thousands separator), may all need to be presented in different ways depending on the locale.
Solving this depends on the importance of quality. Automated translation services, like Google Translate, are improving over time. But they still aren’t perfect. If high quality translation content is necessary, it might be more appropriate to use a more manual process.
Human translators can recognize context better. You can use outsourcing sites like Amazon’s Mechanical Turk for this.
4) Not all site content should be translated
Care needs to be taken to not simply translate the entire website. Certain content, such as URLs or code snippets, should often not be translated.
The approach suggested in this talk solved this by abstracting strings out. Then, at the presentation level, strings were wrapped with a Javascript _t(string)
function call that took care of the translation. This forces the translation to be more explicit.
Note: the _t()
function is specific to the custom translation library Coursera created. View the slide deck for more information on their approach.
Localization is important on the internet. Simply looking at English vs non-English speakers on the internet shows this importance.
Drunk User Testing
This was definitely one of the most fun talks of the day! But before you get too excited - No, we didn’t get drunk for this one :(
The idea behind this type of testing is that (1) your site is simple enough that a drunk user can use it, and (2) drunk users will give more honest feedback.
There’s actually a website called theuserisdrunk.com, where a UX professional says he will get drunk and test your website while recording the session and providing a full feedback document.
Austin Knight was the presenter for this talk, and he works for HubSpot. HubSpot used this service on their homepage and got some valuable feedback. The screencast video is recorded below - it’s actually quite an entertaining video if you have some time!
Austin spent the rest of the talk discussing the possibility of user testing with sober users.
Challenges
There are challenges to consider when setting up user tests. Often times during user testing, users will give opinions even if they wouldn’t normally have one. They end up thinking of an opinion to give instead of fully using the product. This is unnatural. In addition, feedback can be skewed if questions are leading.

2) Iterate the tests
Start with a pilot test that will “test the test.” This will let you identify any flaws in the test before running it against actual users.
Then run tests in iterations. Each iteration really only needs 3-5 users, according to Austin. Continue this iteration cycle.
3) Don’t lead the user
It is important to ask questions that don’t exactly match the implementation.
Consider these two prompts. Which is the better phrasing?
- “Find the job application form and submit it”
- “Find a job you like and apply for it”
The first prompt leads the user by referring to specific implementation terminology (a “form”, a “submit” button). Asking for behavior is preferred, and will help induce a more natural environment.
4) Create a culture of UX at your company
Everyone is a UX designer. There should be a sense of ownership from everyone, and the mindset of “oh, it’s that guy’s fault, not mine” shouldn’t exist.
By following these tips, it is possible to get valuable feedback from every user (not just drunk ones)!
Subscribe via RSS


Modules | |
| FSS Data Structures | |
| FSS Functions | |
Select desired FSS interface | |
This enumerator defines the valid interface selections for the FSS. Note that for fss_ul, only CSL_FSS_INTERFACE_SELECT_FSAS is valid. | |
| typedef uint32_t | CSL_FssInterfaceSelect |
| #define | CSL_FSS_INTERFACE_SELECT_FSAS ((uint32_t) 0U) |
| #define | CSL_FSS_INTERFACE_SELECT_FSS ((uint32_t) 1U) |
Select desired path for the FSAS interface | |
This enumerator selects the desired path (OSPI0 or HYPERBUS) for the FSAS interface. Note that for fss_ul, only CSL_FSS_FSAS_INTERFACE_PATH_SELECT_OSPI0 is valid. | |
| typedef uint32_t | CSL_FssFsasInterfacePathSelect |
| #define | CSL_FSS_FSAS_INTERFACE_PATH_SELECT_OSPI0 ((uint32_t) 0U) |
| #define | CSL_FSS_FSAS_INTERFACE_PATH_SELECT_HYPERBUS ((uint32_t) 1U) |
Select desired FSS interrupt source | |
This enumerator defines the valid interrupt sources for the FSS | |
| typedef uint32_t | CSL_FssInterruptSourceSelect |
| typedef uint32_t | CSL_FssOtfaInterruptSourceSelect |
| #define | CSL_FSS_INTERRUPT_SOURCE_SELECT_ECC_ERROR_1BIT ((uint32_t) 0U) |
| #define | CSL_FSS_INTERRUPT_SOURCE_SELECT_ECC_ERROR_2BIT ((uint32_t) 1U) |
| #define | CSL_FSS_INTERRUPT_SOURCE_SELECT_ECC_WRITE_NONALIGN ((uint32_t) 2U) |
| #define | CSL_FSS_OTFA_INTERRUPT_SOURCE_SELECT_CTR_WKV ((uint32_t) 0U) |
| #define | CSL_FSS_OTFA_INTERRUPT_SOURCE_SELECT_REGION_BV ((uint32_t) 1U) |
| #define | CSL_FSS_OTFA_INTERRUPT_SOURCE_SELECT_WRITE_ERR ((uint32_t) 2U) |
| #define | CSL_FSS_OTFA_INTERRUPT_SOURCE_SELECT_MAC_ERR ((uint32_t) 3U) |
Select desired FSS output interrupt | |
This enumerator defines the valid output interrupts for the FSS | |
| typedef uint32_t | CSL_FssOutputInterruptSelect |
| #define | CSL_FSS_OUTPUT_INTERRUPT_ECC_ERROR ((uint32_t) 0U) |
OTFA Authentication modes | |
This enumerator defines the valid OTFA Authentication modes | |
| typedef uint32_t | CSL_FssOtfaMacMode |
| #define | CSL_FSS_OTFA_MAC_MODE_DISABLED ((uint32_t) 0U) |
| #define | CSL_FSS_OTFA_MAC_MODE_GMAC ((uint32_t) 1U) |
| #define | CSL_FSS_OTFA_MAC_MODE_CBC_MAC ((uint32_t) 2U) |
OTFA Encryption modes | |
This enumerator defines the valid OTFA Encryption modes | |
| typedef uint32_t | CSL_FssOtfaEncMode |
| #define | CSL_FSS_OTFA_ENC_MODE_DISABLED ((uint32_t) 0U) |
| #define | CSL_FSS_OTFA_ENC_MODE_AES_CTR ((uint32_t) 1U) |
| #define | CSL_FSS_OTFA_ENC_MODE_AES_ECB ((uint32_t) 2U) |
OTFA key size | |
This enumerator defines the valid OTFA key sizes | |
| typedef uint32_t | CSL_FssOtfaKeySize |
| #define | CSL_FSS_OTFA_KEY_SIZE_128_BITS ((uint32_t) 0U) |
| #define | CSL_FSS_OTFA_KEY_SIZE_256_BITS ((uint32_t) 1U) |
OTFA crypto core allocation to read and write pipes | |
This enumerator defines the valid allocations of the Ctypto cores to read transactions and write transactions | |
| typedef uint32_t | CSL_FssOtfaCrypoCoreAlloc |
| #define | CSL_FSS_OTFA_CRYPTO_CORE_ALLOCATION_BALANCED ((uint32_t) 0U) |
| #define | CSL_FSS_OTFA_CRYPTO_CORE_ALLOCATION_RD_OPTIMIZED ((uint32_t) 1U) |
| #define | CSL_FSS_OTFA_CRYPTO_CORE_ALLOCATION_WR_OPTIMIZED ((uint32_t) 2U) |
===========================================================================
| #define CSL_FSS_FSAS_INTERFACE_PATH_SELECT_OSPI0 ((uint32_t) 0U) |
Select path to HyperBus
| #define CSL_FSS_INTERFACE_SELECT_FSAS ((uint32_t) 0U) |
Select FSS interface (to OSPI1)
| #define CSL_FSS_INTERRUPT_SOURCE_SELECT_ECC_ERROR_1BIT ((uint32_t) 0U) |
ECC error on 2 bits, not correctable
| #define CSL_FSS_INTERRUPT_SOURCE_SELECT_ECC_ERROR_2BIT ((uint32_t) 1U) |
Write is not aligned to 32B boundary or not a multiple of 32B
| #define CSL_FSS_OTFA_CRYPTO_CORE_ALLOCATION_BALANCED ((uint32_t) 0U) |
Read optimized: 75% of the cypto cores alocated to the Read Pipe, 25% of the Cypto cores on the Write Pipe
| #define CSL_FSS_OTFA_CRYPTO_CORE_ALLOCATION_RD_OPTIMIZED ((uint32_t) 1U) |
Write optimized: 25% of the cypto cores alocated to the Read Pipe, 75% of the Cypto cores on the Write Pipe
| #define CSL_FSS_OTFA_ENC_MODE_AES_CTR ((uint32_t) 1U) |
ECB+ mode
| #define CSL_FSS_OTFA_ENC_MODE_DISABLED ((uint32_t) 0U) |
AES CTR mode
| #define CSL_FSS_OTFA_INTERRUPT_SOURCE_SELECT_CTR_WKV ((uint32_t) 0U) |
Region overflow boundary event caused by a burst transaction crossing a start or end of a region
| #define CSL_FSS_OTFA_INTERRUPT_SOURCE_SELECT_REGION_BV ((uint32_t) 1U) |
Region write error event, write cmd issues when write is disabled
| #define CSL_FSS_OTFA_INTERRUPT_SOURCE_SELECT_WRITE_ERR ((uint32_t) 2U) |
Region MAC compare error event, read MAC did not match the write MAC
| #define CSL_FSS_OTFA_KEY_SIZE_128_BITS ((uint32_t) 0U) |
256-bit key size
| #define CSL_FSS_OTFA_MAC_MODE_DISABLED ((uint32_t) 0U) |
GMAC mode, max burst size of 128 Bytes
| #define CSL_FSS_OTFA_MAC_MODE_GMAC ((uint32_t) 1U) |
CBC-MAC mode, max burst size of 128 Bytes
| typedef uint32_t CSL_FssFsasInterfacePathSelect |
Select path to OSPI0
| typedef uint32_t CSL_FssInterfaceSelect |
Select FSAS interface (to OSPI0 or HYPERBUS)
| typedef uint32_t CSL_FssInterruptSourceSelect |
ECC error on 1 bit, correctable
| typedef uint32_t CSL_FssOtfaCrypoCoreAlloc |
Read and Write is balanced: 50% of the cypto cores alocated to the Read Pipe, 50% of the Cypto cores on the Write Pipe
| typedef uint32_t CSL_FssOtfaEncMode |
Encryption is disabled
| typedef uint32_t CSL_FssOtfaInterruptSourceSelect |
AES CTR enabled region violated write once per write key rule
| typedef uint32_t CSL_FssOtfaKeySize |
128-bit key size
| typedef uint32_t CSL_FssOtfaMacMode |
Authentication is disabled
| typedef uint32_t CSL_FssOutputInterruptSelect |
ECC error interrupt
| uint32_t CSL_FssEccBlockErrorInfo::addr |
32 byte aligned block address
| uint32_t CSL_FssWrErrorInfo::addr |
When set indicates that there was a write error due to non-contiguous byte enables
| uint32_t CSL_FssOtfaCryptoCfg::bErrRespEnable |
Crypto core allocation. See CSL_FssOtfaCrypoCoreAlloc
| uint32_t CSL_FssWrErrorInfo::byteEnable |
Indicates the Route ID for the Master that caused the write error
| uint32_t CSL_FssOtfaIrqInfo::cmd |
Master seq which caused the event. Not avalible for MAC error events.
| uint32_t CSL_FssOtfaCryptoCfg::cryptoCoreAlloc |
Key size. See CSL_FssOtfaKeySize
| uint32_t CSL_FssEccBlockErrorInfo::da0 |
When set indicates that there was a single error detected within the High Data word
| uint32_t CSL_FssEccBlockErrorInfo::da1 |
When set indicates that there was a single error detected within the MAC field
| uint32_t CSL_FssEccBlockErrorInfo::ded |
When set indicates that there was a single error detected within the Low Data word
| uint32_t CSL_FssOtfaCryptoRegionCfg::encKey[8] |
Defines the Encryption Prime key (decryption key) when ECB+ mode is enabled. Used only during read operations. SW must generate the encPrimeKey based on encKey.
| uint32_t CSL_FssOtfaCryptoRegionCfg::encMode |
Defines the base address of the MAC signatures. Must be 4KB aligned.
| uint32_t CSL_FssOtfaCryptoRegionCfg::encPrimeKey[8] |
Defines the Authentication key for GMAC modes. For CBC-MAC modes, this key is only used for write operations.
| uint32_t CSL_FssOtfaIrqInfo::id |
Master cmd which caused the event
| uint32_t CSL_FssOtfaIrqInfo::length |
Master address which caused the event
| uint32_t CSL_FssEccBlockErrorInfo::mac |
When set indicates that there was a single error detected within the address field
| uint32_t CSL_FssOtfaCryptoRegionCfg::macKey[4] |
Defines the CBC-MAC Prime key (decryption key) when CBC-MAC mode is enabled. Used only during read operations. SW must generate the macPrimeKey based on macKey.
| uint32_t CSL_FssOtfaCryptoRegionCfg::macMode |
Defines the Encryption mode. See CSL_FssOtfaEncMode
| uint32_t CSL_FssOtfaCryptoRegionCfg::macPrimeKey[4] |
Defines the Initialization Vector used for Encryption/Authentication
| uint32_t CSL_FssOtfaCryptoRegionCfg::macSignaturesBaseAddr |
Defines the start of the crypto memory region. Must be 4KB aligned.
| uint32_t CSL_FssCfg::otfaKeySizeWords |
Pointer to the OTFA configuration register region
| CSL_fss_fsas_genregsRegs* CSL_FssCfg::pFsasRegs |
Pointer to the FSS configuration register region
| CSL_fss_fsas_otfa_regsRegs* CSL_FssCfg::pOtfaRegs |
Pointer to the FSAS configuration register region
| uint32_t CSL_FssOtfaCryptoRegionCfg::regionAddrStart |
Defines the size of the crypto memory region. Must be a multiple of 4KB.
| uint32_t CSL_FssOtfaCryptoRegionCfg::regionSizeBytes |
Defines the Encryption key for AES-CTR modes. For AES ECB+ modes, this key is only used for write operations.
| uint32_t CSL_FssOtfaStats::rmEventCnt |
Number of cache miss events
| uint32_t CSL_FssOtfaStats::rmwEventCnt |
Number of RM events
| uint32_t CSL_FssEccBlockErrorInfo::sec |
When set indicates that there was a double error detected for the block
| uint32_t CSL_FssOtfaIrqInfo::seq |
Master burst length which caused the event
| uint32_t CSL_FssOtfaCryptoRegionCfg::writeProtect |
< Write protection mode: 0=disabled, otherwise enabled. When enabled, all write cmds will get forwarded with their byte enables nullified. Also a WRITE_ERR event will get set for that region which had the violation. Defines the Authentication mode. See CSL_FssOtfaMacMode


Artificial Intelligence & Computer Vision Engineer
Biomedical engineer specialized in artificial intelligence, machine learning and computer vision with applications to medical imaging.
I am Senior Artificial Intelligence Engineer at the Clario R&D medical imaging division, working
on deep learning technologies for medical images analysis in the context of large-scale clinical trials.
In 2017, I graduated in Biomedical
Engineering (equiv. MSc) from Polytechnic University of Turin, Italy,
while part of the image and signal processing laboratory of Télécom Paris, France. In 2018, I joined the image-guided surgery
team of Necker Hospital, leading the AI research activity and managing the tech transfer operations. The developed methods were used
in more than 100 complex operations, the project entering the ParisBiotechSanté start-up incubator in 2021. In 2022, I joined
Clario for my current position as deep-learning engineer.
My interests include supervised learning, neural networks, medical imaging, shapes recognition, decision theory, explainable AI and robotics.
I authored multiple peer-reviewed publications on AI methods for MRI processing and I am the main contributor to various imaging software solutions.
I am active in the entrepreneurship and start-up environments, participating in the HEC Bio-Entrepreneurs program and co-founding a start-up spin-off of the
Imagine Institute. With my industry, academic and public healthcare experiences, I regularly give lectures on medical imaging for Master programs, and I mentor junior engineers and medicine students.
June 2022 - Present
Clario is the global leader in technology services for clinical trials management. As a senior member of the algorithms and automation team, I provided innovative AI solutions for large-scale trials based on medical imaging technologies.
Mar. 2019 - May 2022
Necker is the main European pediatric hospital for robotic surgery. Leading the image-guided surgery team, I delivered digital twin technologies and augmented reality systems used in more than 100 complex operations. I managed the AI research and the tech transfer operations.
Sep. 2017 - Feb. 2018
Research internship in the image, data and signal processing lab (LTCI - IDS) of the leading French engineering school in artificial intelligence.
2014-15
Humanitas is a highly specialised teaching and research hospital. Internship in two key private clinics developing the IT service management.
2018
2017
Currently based in Paris (FR) and Turin (IT)
75011 Paris, France


--- layout: post title: "Getting Started with Apache Camel and Java" date: 2017-09-19 15:00:00 author: "Bennet Schulz" tags: - Camel ---
Some days ago a friend of mine told me it would be very hard to start with Apache Camel as a Java Developer because the documentation is missing or very hard to find.
I know there are some other tutorials out there but some of them are outdated or contain too much content for a simple getting started guide.
Therefore I decided to write this blogpost to help other developers starting with Apache Camel and Java.
This post describes how to create a new Maven based standalone Apache Camel project using the Java DSL.
Standalone means it's a plain Java application and not integrated in a Spring application, an OSGI bundle or something like that.
You can use the following snippet to generate a Apache Camel project with a small sample routing logic using the Java DSL.
mvn archetype:generate -DgroupId=com.schulz.bennet -DartifactId=camel-start-java -DarchetypeGroupId=org.apache.camel.archetypes -DarchetypeArtifactId=camel-archetype-java -DinteractiveMode=false
Just in case you don't like the console that much you can use the IntelliJ wizard as well.
Open IntelliJ and click on File -> New -> Project... -> Maven
. Now enable the Create from archetype
checkbox and select org.apache.camel.archetypes:camel-archetype-java
.
In the sample which comes with the maven archetype there are two classes: MainApp
and MyRouteBuilder
. The Main App looks like this:
MyRouteBuilder
.
A route class has to extend the RouteBuilder class. In addition to that it has to override a configure() method which contains the routing logic.
In this example it contains a logic which reads files from src/main/data
by using the file component. (see: Apache Camel File Connector)
src/main/data
directory should not be moved or deleted.
/person/city
hierarchy in the input file.
If it's part of the file and the city is London, another component will log "UK message" and will write the whole file to target/messages/uk
.
Otherwise it will log "Other message" and write it to target/messages/others
.
Bye,
Bennet


---
layout: post
title: Heston Blumenthal working with Walkers crisps
date: '2008-06-17T09:20:20+01:00'
tags: []
tumblr_url: http://backlog.robbevan.com/post/38719934/heston-blumenthal-working-with-walkers-crisps
---
Heston Blumenthal working with Walkers crisps


Engineering Solutions Support & Personnel
Our solutions are focused on Instrumented Control and Instrumented Safety systems. The teams core skills are rooted within the engineering sector from conception through to hand-over, delivering a high level of engineering and expertise combined with efficiency through our complete in-house teams.
Complete in-house teams
Consulting, Engineering & Design, Control Engineering, work shop build and construction teams through the supply chain under one roof delivering a "one stop shop".


Recall the Kernel SVM dual problem:
Dual Problem
We have introduced using gradient descent algorithm to solve the dual problem. However, the computation of the gradient has a high time complexity and thus would be a challenge for memory, especially when the training dataset is large. In this post, I introduce an efficient and light-version algorithm to solve the dual problem: Sequential Minimal Optimization (SMO)
Sequential Minimal Optimization (SMO)
The algorithm of SMO is:
Initialization: let be a set which satisfies the dual constraint.
Repeat:
(1) heuristically select two , and set all the other fixed;
(2) optimize with respect to ;
Until: KKT condition is satisfied with certain accuracy.
First question about the initialization: how to find a set which satisfies the dual constraints?
The answer is simply set for .
Suppose that we have finished the initialization, and pick up a pair to optimize while keeping fixed, then we have
Moreover, according to the dual constraints, we have
So we have
is concave with respect to , since due to the fact that the kernel matrix is nonnegative definite (see last post An Introduction to Support Vector Machines (SVM): kernel functions ). Therefore, we can find the optimal value of which maximizes by computing the gradient and set it to 0.
By solving this equation, we will get the solution for :
It is too complicated to compute the numerator since there are too many terms. In the next, we will show that we can actually compute from the old .
Before updating the value of , we first use the old version to perform the classification on data :
Base on the expressions of , we can have the following equation:
We denote prediction error , then we have the expression of :
Discussion: What if ? In this case is a first degree function, it’s still concave, but in this case the definition of is no longer meaningful, so we just simply select another pair and do the computation above.
Note that the expression of the is not clipped, so for simplicity we name it as . It is inadequate to only compute the . We need to further clip it based on the meaningful domain determined by the dual constraints. According to the dual constraints, each actually has a box constraint. So we have:
We know that . Based on whether or not, we can have the relationship between and with box constraints, shown in the figure below.
According to the figure, we can get the lower bound and higher bound for a meaningful solution of a new :
- if :
$$ L = \max(\xi y_b, 0)\\ H = \min(C+\xi y_b, C ) $$ - if :
$$ L = \max(0, -C-\xi y_b)\\ H = \min(C, -\xi y_b) $$ Based on and , we can get the clipped new :
This is the final meaningful new value of . For simplicity, in the following we use to refer .
After getting , we need to compute :
Now, we need to decide whether to update the value of . If , then is the support vector which is exactly located at the margin. Therefore, we can update as:
Otherwise, if , we can update as:
Note that if neither nor , here we choose not to update .
Now, we have finished one single iteration in SMO.
Before we summarize the algorithm of SMO, there are some updates that can improve the computation efficiency.
- Computation of :
In the deduction above, we can see is used in computing and . If we compute using , it will be time consuming. Instead, we can use the equation
$$ \xi = -\lambda_a^\text{old} y_a - \lambda_b^\text{old} y_b $$ By substituting the expression of into the expression of , we have:
Sequential Minimal Optimization Algorithm
According to the deduction above, we can have the pseudo algorithm of the SMO.
Initialization: for , , and pre-calculation of the Kernel matrix
Repeat:
heuristically (or randomly) select a pair ;
if :
continue
if :
else:
if :
else if :
else:
if :
else if :
Until: Maximum iteration reached, or the dual objective function is not further maximized with a certain accuracy.
Cool, isn’t it? Now We are able to solve the dual problem using the SMO algorithm!
Ref:
-
Previous
An Introduction to Support Vector Machines (SVM): kernel functions -
Next
An Introduction to Support Vector Machines (SVM): A Python Implementation


- Education
-
Massachusetts Insitute of Technology
Major: Computer Science, Mathematics
Minor: Spanish and Latin American Studies
- Skills
-
Computer skills
- Experience
-
Dexisive/Secunetics
Associate Consultant Intern (January, 2016)
- Web scraping and crawling project using kimono, and using that data to build
a difference table of two selected input dates in a side-by-side manner.
- Learn about OWASP top 10 software security overview and testing, and network
malware traffic analysis and assessment
MIT CSAIL Cybersecurity and Internet Policy Engineering Initiative (2015–present)
Undergraduate Researcher
XL Hybrids (June–August 2015)
Software Engineering Intern
Generating csv files and transforming them programmatically into desired format of excel data sheets.
Wrote python scripts to facilitate analysis of vehicle data logs, to compare unsynchronized data between customer and company
trip logs, and with bash scripts to retrieve and analyze vehicle data for all customer vehicles from cloud database.
MIT Energy Research (February–May 2015)
Undergraduate Researcher
Research for local, Off-Grid Power Solutions for the Republic of Liberia. Compile research results and technologies
for off-grid power solutions.
Exposure to research on off-grid power solutions developed at MIT, Harvard and several startups.
MIT CSAIL Vision Group (June–December 2014)
Undergraduate Researcher
Rapid Visualization of Pictures and Medical Images
Add new features to an interactive image visualization tool, tipiX (blending of images interactively, contrast/
brightness, interactive EXIF reading etc.
Exposure to developer tools, web programming and Javascript.
Design and implement pixel manipulation and image segmentation algorithms
Design and implement simple UI for tipix (with interactive buttons, panels, console etc.
- Hobbies
- Reading, cinematography, art, museums, animation movies, storytelling


We are here to help you.
How to change my account password?
First you have to login. Then naviage to profile (hit profile menu in home toolbar). Then hit edit button (rounded yellow button) on the up right corner.
How to create new thread?
First you have to login. Then navigate to Home page. Hit the rounded button on the right side of the screen with the pencil image to crete new thread.
How to log out?
First you have to login. Then navigate to Home page. Go to up right corner to logout your account.


Perform strip theory analyses from a Vessel.js ship specification. Read more about this app here.
This app converts a Vessel.js ship specification into PDSTRIP input files for strip theory analyses. Upload a JSON ship specification using the button below, and you will be able to download two files: geomet.out and pdstrip.inp. The PX121 PSV specification is preloaded.
Ship table of offsets. The table is derived for the design load condition given in the ship specification.
Physical parameters for the analyses. It is filled by this app, but should be fine-tuned by the user after downloaded. Radii of gyration are estimated from main dimensions.


To open a window using SwiftUI, first add a WindowGroup that will display the window's view. Use the handlesExternalEvents modifier to indicate the event that is used to display the window.
import SwiftUI
@main
struct WindowOpenApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
WindowGroup("My Info Window") {
InfoView()
}
.handlesExternalEvents(matching: ["infowindow"])
}
}
import SwiftUI
struct InfoView: View {
var body: some View {
Text("Some text goes here")
.padding()
.frame(width: 300, height: 200)
}
}
A Button is used to open the window. The button's action defines the URL related to the app's URL scheme and event.
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text("Click button to open the window")
Button("Open Info Window") {
if let url = URL(string: "windowapp://infowindow") {
NSWorkspace.shared.open(url)
}
}
}
.padding()
.frame(width: 300, height: 200)
}
}
Finally, to get all of this to work properly, define the URL scheme in the Xcode project's settings at Target → Info → URL Types.
Swift Programming for macOS © 2023
Built by Gavin Wiggins